Added more comments. It should be the final Version.