It's been a while since my last pull request. It has a lot of stuff