add flip, when-lets, and if-lets