changed the type of the factory method to the abstract parent.
Made certain methods static to accommodate for the change.