Tidied up the docstrings, changed the triggers to trigger (It became too complicated with multiple triggers, will implement later if needed), and changed the name given by __repr__ to __str__ (so it is more configurable if you use an custom object instead of a function)