added domain classes and based on canonical model.