Class methods to create these without exposing the subclass types? We can check the returned types in the tests?