Add list monad version

Minor style alternatives and list monad versoin