implemented the factory() method from the child up to the abstract parent.
updating changelog and examples