use boost smart pointer
update .travis.yml