Ottima soluzione, con qualche neo da correggere