I'd be happy with MonadPlus to simplify the constraint.  Can you write that up into a pull request?