Ivan, Oops ... SH> and write the following function, knowing that SH> TestPacket is an instance of Packet, SH> SH> getFoo :: Packet -> Foo SH> getFoo packet = source packet . Clearly, I meant to write getFoo :: TestPacket -> Foo here. Regards, Stefan