Refactored to include interface, to allow completely own implementation of response handler, Closes #280