First commit of the project.

No UI, no implementations, a bunch of interfaces.