use functors for cuts