modified initializer