This looks nice. One thing though - you should consider using strings instead of numbers for the amounts. The problem is that numbers in JS are actually floats, and you lose precision on high values. Probably not going to make a big difference, but e.g. 100000000000000001 can't be represented as a number in JS.