add doc
use smartpointer for backend