UNO: Massive Refactor with iterators. Refer to commit before for clean code. Should have branched.