Refactored Designated Initializers and default initializers