reorganize pattern matching and guards
where
let
case expressions