· 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?
· What test cases have you devised?