Seperated everything out into components.

The components might be better organized than what they currently are organized
as. But this is a good start I think.