WARNING!
Some of this stuff may be useful