generic handling in abstract factory. MessageId implemented