Updated the system to use the new Magic bind function. This allows the gets to return different types to the trigger types. Also it should avoid the g++ bug
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41933