Initial commit, fully developed.
slightly modified. No functionality change. Only comments added.