remove pointless do

as suggested by hlint
Make gf and friends respect ~

Also de-uglify the if not ... then ... else stuff