refactor due to ez_new, etc