initial commit, needs more algorithms and comments