Added a ref counted shared pointer and operator*() to smart pointer