created factory method and abstract factory
Merge https://github.com/clorieanne/factory