Abstract class refactoring