Enhance the generality using a priceable type class, with pv and fv for example. All instruments that are priceable will be part of a portfolio, which is in itself priceable. Will make it easier to construct swaps (from a portfolio of a floating bond and a zero bond with opposite positions).