Removed circular dependencies using forward declarations between classes, restructured to use purely stl vectors since there is no need for concurrent writes to them (and for actual contiguous data)