all working, just need to refactor