lots of code rework. Much more professional looking