Update and improve previous