added result_of_rec trait