Made some major changes to get the structure a bit better.