pulling out peer exchange functionality
some starts on promises
big start on refactor and updated tests