factory
registry
singleton pattern were added