Copyright (c) 2009-2015, Kevin Decker <kpdecker@gmail.com>