https://lucianocaveri.com/blog/2010/10/05/s-p-q-r