Major improvement. Used NotePad++, so imports are missing for some