some design rework