- when classes are abstract, we need concrete createMethods