allow reducing head recursion