Finished first fully functional version