What design for the APIs would you suggest?