If you have the energy, try these before moving on to the next section. These exercises focus on test-first programming, meaning that they focus on writing correct behavior and on writing the fewest design elements that solve the problem.
Add more behavior to your fractions library: multiply fractions, then subtract them, then divide them. How will you handle dividing by zero?
Add more items to the mathematics library: arithmetic with complex numbers, arithmetic with polynomial expressions of one variable (such as 2x^3 + 3x^2 + 7x + 9, which you could represent as [9, 7, 3, 2], so that the number at index n is the coefficient of x^n.
Do you find any common behavior to extract from among fractions, complex numbers, and polynomials? Extract it. What name do you give to it?