refactor appropriate_e_no_recursion