Various Changes Polymorphism, builder pattern, rule engine