Control flow as first class variables