{
	field: {
		preBurn: function (value, o_value, s_property) {

			var s_compiler = o_value.fieldRulesPath;

			// Iterate each field, then compile the field against supplied XPD
			// from fieldRulesPath
			ip2.each(value, function (o_field, s_field, o_context) {
				o_context[s_field] = xpd.compile(o_field, s_compiler);
			});
		}
	},
	view: {
		preBurn: function (value, o_value, s_property) {

			var s_compiler = o_value.viewRulesPath;
			
			// Iterate each view and inherit values into objects in view
			// that has a property key match against a supplied match object
			// Then compile the view against supplied XPD from viewRulesPath
			ip2.each(value, function (o_view, s_view, o_context) {

				// Get the match object (database fields of the entity)
				var o_match = o_value.field;
				o_view = o_context[s_view] = xpd.deepInherit(o_view, o_match, 'name');
				
				o_view = o_context[s_view] = xpd.compile(o_view, s_compiler);
			});
		}
	},
	idColumn: {
		preBurn: function (value, o_value, s_property) {

			var o_compiler = this;

			// Messing around with backwards compatbility, since old DMD's could
			// have the primary field described in entity
			// Iterate fields and set primary=true on field that matches value
			ip2.each(o_value.field, function (o_field, s_field, o_context) {
				if ( s_field == value ) {
					o_context[s_field].primary = true;
				}
			});
		}
	}
}