Revert "Abstract Pattern and Factory Method"

This reverts commit fafbcf829e564e15d52425b51df8759a360b57b9.