Adds more advanced packaging system

- [x] test manually
- [x] fix existing tests
- [x] improve code coverage
- [x] get @rogerthomas84 to test it manually :)
- [ ] update documentation :(