Rewrote Signal template to take advantage of C++11 functionality