Turned an initializer into a factory func