update and fix some bug: don't override __new__