Moved the extra classes to be subclasses
Some cleanup and refactoring of the memory class
Creating / deleting segments is now undo-able