As it is now, the classes contain code that is literally duplicated, for example the method toArray(). This should be fixed. It does not have to be with an abstract superclass if you think this does not make sense here.