+ IsString instance
+ add basic cost matching