fully working program. just comments and build work.