changed __new__ to metaclass __call__