update API to use boost::signals2 (#267)