sp_char typedef
all dynamic allocation controlled by shared_ptrs now