--- title: Design order: 10 --- The `Design` named export in FreeSewing's core library serves a single purpose: To create new pattern designs. ## Design constructor ```js import { Design } from "@freesewing/core" const Sorcha = new Design({ // design configuration here }) ``` This constructor creates a new pattern design. It takes a single argument, an object holding the design's configuration. ## Design configuration Since a design's configuration is managed at the part level, the Design constructor only expects a `parts` attribute that should hold an array of parts to include in the Design. ```js const Sorcha = new Design({ parts: [ front, back, sleeve ], }) ``` A Design in FreeSewing is little more than a container for various Parts Optionally, you can also pass it a `data` attrbute to hold any custom data you'd like to add to your Design. Any `data` you add to the Design constructor will be added to [the Store](/reference/api/store). ```js const Sorcha = new Design({ parts: [ front, back, sleeve ], data: { // Your custom data here } }) ``` This Design constructor is a _super-constructor_. It will return a constructor method that will a pattern based on your design.