There may be no best solution for it but here's some of my thoughts: 1. Seperate the logic and interface. You duplicate codes on the form but keeping the logics in 1 place. Probably this is too late for you to do now. 2. Have only 1 form, but a lot of switches to turn on/off the controls. But it will get very messy and confusing. I have seen forms and panels overlapping each other in one of our product and it's a nightmare just to look at the codes. 3. Put the core stuffs in a base form and inherit the forms into 2 forms (possible?), add new requirement on each new forms as required. If you have a 3rd requirement for new customer, it can support it well enough. 4. Duplicate everything into 2 forms. Harder to maintain but not as bad as (2). Out of these few, I think 1 and 3 are the better one.