Update with pseudocode, initial sln, and refactor