Refactor reply interface. Closes #1902. Closes #2103