Modularizzato. Aggiunti alcuni TODO.