revised initializer