seperate modules out a bit more
add extremely inefficient solution to problem 23