feature are now using unique_ptr and no longer shared_ptr and thus all usage has been changed to references