changing inits to return instancetype