Uploading main project. Revision and refactoring will follow.