const just mean smart pointer is unchangeable