Fully working program, comments just need some work now.