Make architecture more flexible.
Prepare project for multiple packages.
Organize code even further to improve extensibility.
Add files from pridepack. Initial implementation.