proof read by @valdelama