First version

This is the first fully functional version.