Copyright (c) 2011 Troy Goode <troygoode@gmail.com>