still working on client refactor