Added strongly typed price and material cost, refactoring tbd