start rework (its now readable)