added EmitterType abstract class