Add interfaces and refactor Response