Commit #2, let me know if there are issues.