backend functional minus some workout semantics