Expert Answers

What representation (e.g., data structure) will you use, and what invariants will it satisfy? (This question is especially important to solve the problem precisely.)
What functions will you offer, and what are the contracts of that those functions must meet?
What functions or members will be exposed publicly? What will not be exposed?
What examples do you have of what the functions are supposed to do?