API refactor - Chapter 9
Client refactor - Chapter 9