Refactored command structure
Commands now use continuation style instead of simply returning IO ()
so that they can short circuit if they don't have anything to do.