crosspost: <https://orchard.codeplex.com/discussions/459007>

First question I have is what would be the repercussions of having 2 PartHandlers for the same Part in 2 different modules? 

I got into this predicament because I have to run a method once a specific Content Type is created. It would be as easy to hook onto OnCreated for the part, however, here is my scenario: 

* Module A contains the part and the original handler
* Module B contains the service where the method is
* Module B has a reference to Module A

Therefore, I am unable to reference Module B within Module A (circular reference). So what I did was to copy the exact same PartHandler in Module A and placed it in Module B. 

Would anything be wrong with that? 

Then comes my second question, which I think could solve all these problems: Can we create a PartHandler for the Content Item's default Content Part? (i.e. the part where all custom fields are attached to) 

This would definately make things easier as I could consolidate stuff that need to run there.

**UPDATE 1 (to better explain question 2)**

```
    ContentDefinitionManager.AlterPartDefinition("EventItem",           
      builder => builder                         
                    .WithField("StartDate", cfg => cfg
                        .OfType("DateTimeField")
                        .WithDisplayName("Start Date")
                        .WithSetting("DateTimeFieldSettings.Display", "DateOnly")
                        .WithSetting("DateTimeFieldSettings.Required", "true"))
                    .WithField("StartTime", cfg => cfg
                        .OfType("DateTimeField")
                        .WithDisplayName("Start Time")
                        .WithSetting("DateTimeFieldSettings.Display", "TimeOnly"))
                    .WithField("EndDate", cfg => cfg
                        .OfType("DateTimeField")
                        .WithDisplayName("End Date")
                        .WithSetting("DateTimeFieldSettings.Display", "DateOnly"))
                    .WithField("EndTime", cfg => cfg
                        .OfType("DateTimeField")
                        .WithDisplayName("End Time")
                        .WithSetting("DateTimeFieldSettings.Display", "TimeOnly"))
                    .WithField("Intro", cfg => cfg
                        .OfType("TextField")
                        .WithDisplayName("Intro")
                        .WithSetting("TextFieldSettings.Flavor", "textarea"))

    ContentDefinitionManager.AlterTypeDefinition(
        "EventItem"
        , cfg =>
            cfg
                .DisplayedAs("Event Item")                        
                .WithPart("TitlePart")
                .WithPart("EventItem")
                .WithPart("LocationPart")   
                .WithPart("AutoroutePart", builder => builder
                    .WithSetting("AutorouteSettings.AllowCustomPattern", "true")
                    .WithSetting("AutorouteSettings.AutomaticAdjustmentOnEdit", "false")
                    .WithSetting("AutorouteSettings.PatternDefinitions", "[{Name:'Title', Pattern: 'learn/events/{Content.Slug}', Description: 'learn/events/event-title'}]")
                    .WithSetting("AutorouteSettings.DefaultPatternIndex", "0"))
                .WithPart("CommonPart")
                .Draftable()
                .Creatable()
    );

```

I'm talking about creating a ContentHandler for the EventItem part which holds all the custom fields. How can I go about it when EventItemPart is not defined in any class in the solution?

The following below won't work since it can't find the class EventItemPart:

```
OnCreated<EventItemPart>((context, keynotes) =>
    questionService.SetDefaultQuestions(context.ContentItem));

```