Final Committ

Final code with comments and tests.