Updated for the sake of my blog not falling apart.  Don't use this codebase.