Fair point about not working with split. Abstract classes don't have to be devoid of implementation, though (unlike Java). You can have an abstract class (can't be instantiated) with concrete methods (providing default functionality).