initializer improved