initial import
macros for almost-identical member functions
Ref -> shared_ptr
a bit if make_shared cleanup
spacing
gitignore update