Use smart pointer

Signed-off-by: Sup Yut Sum <ch3cooli@gmail.com>