prototype
singleton
adapter
adapter