maybe removed direct left recursion?