o.__new__ takes cls as first argument, not self