more work for (recur) and cleanup dispatch functions