events and stuff, doesn't currently work due to C++ preprocessor not liking the compile time hashing