Window

Hopefully there is enough documentation in the comments and what not :D