added new domain/model types
updated Demand to use strong types instead of primitives