refactor for ez_new and ez__construct