A lot of improvements... See code