Added support for raise error
Added support for predicate: have
Refactored it a little bit
Moved things over a little bit