With contributions from: gregdek, ian, 216.27.154.200, ian, garrison, garrison