algorithm detalisation