http://blog.trevnorris.com/2013/08/long-live-callbacks.html