ADD: basics of design patterns for constructor