define instantiate method in ResponsibleTrait.
(was defined in each classes, Trait's method can be overwritten).
make Chain, Dispatch, and Page an abstract class.
they are not meant to be used as stand alone objects.