Internal classes. Not to be modified or accessed directly.