Initial commit, a lot of program function already working