Finished basic version.