Get class hierarchy up, smart_ptr twiddlings. Add external matrix library ***Compiles only. NOT RUNNABLE***