Began refactoring to use Abstract