Restructures further and added tests

The solution was restructured and tests were modified so they actually
ran.