public Controller(Form1 form) { reader = new RuleReader(); rules = reader.createRules(); mainForm = form; inferenceEngine = new InferenceEngine(); displayMemory = new WorkingMemory(); //initialize the other lists firedRules = new List <Rule>(); nonApplicable = new List <Rule>(); workingRules = new List <Rule>(rules); //shallow copy since the rules shouldn't be modified during operation }