First implementation of everything. Tests need to be done, but the
project should work.