We obviously need different kinds of ValueWithHistory, some for integers and some for money. For example, perhaps each ValueWithHistory is parameterized with the class of its value.
Money needs more than the magnitude to initialize.
If we are using the same Money class from HW6, we always need a currency to make a Money object. We can hard code a default currency in Money, but it's kind of inflexible. I had this problem too, but couldn't find a way around it. I thought it would break more things to change zero to take a currency argument. I already handed in the homework, but am still interested in that problem.