Begin polymorphism refactoring