EJMF: abstract base classes for Controller, Player, etc.