tweaked boolean monads to return unit and list to ellide unit so we can use bind for list comprehensions