prepared for implementing snapshots
dont mind the packages, will rethink packaging