Lots of syntax changes and smart pointer integration