This is the first time to commit, all code and documentation was tidied up.