Restructured more like node-steam, little nicer to work with than one giant file.