joeytwiddle: I think I'll add some type inference for optimization somewhere later.