Here's some documentation. I'll fix it up later