added support for ! in guards