ready for deliverable
refactor some