add a  __new__ function