Abstract classes to make it easier for testing.