refactor due to ez_new and ez__construct