Refactors code to use shared_ptrs
Updates CMakeLists to build test files
Adds support for various lists (mainly SortList's)