implemented Designated Initializer
added Parameter Asserts