--- title: "The part's draft method" --- Each part **must** have a `draft` property that holds a method that will draft the part. In other words, this method is where the actual work happens. The method's signature is as follows: ```js function draft(props) ``` The draft method receives a single parameter, an object which you can _destructure_ to access the following properties: | Property | Description | | ----------------: | :------------------------------------------------------------------------------------------------------------ | | | **_Content constructors_** | | `Path` | A [Path constructor](/reference/api/path) to create new paths | | `Point` | A [Point constructor](/reference/api/point) to create new points | | `Snippet` | A [Snippet constructor](/reference/api/snippet) to create new snippets | | | **_Content containers_** | | `paths` | Add a Path to your part by adding it to this object | | `points` | Add a Points to your part by adding it to this object | | `snippets` | Add a Snippet to your part by adding it to this object | | | **_Access to settings_** | | `absoluteOptions` | Access to `settings.absoluteOptions` | | `complete` | Access to `settings.complete` | | `expand` | Access to `settings.expand` | | `measurements` | Access to `settings.measurements` | | `options` | Access to `settings.options` | | `paperless` | Access to `settings.paperless` | | `sa` | Access to `settings.sa` | | `scale` | Access to `settings.scale` | | | **_Access to utilities_** | | `context` | Allows access to the pattern object and other things higher in the tree | | `getId` | See [the getId documentation](/reference/api/part/getid) | | `log` | See [the Store Methods documentation](/reference/store-methods#store-methods-we-maintain) | | `macro` | See [the macros documentation](/reference/macros/) | | `store` | See [the store documentation](/reference/api/store) | | `units` | A version of [`utils.units()`](/reference/api/utils/units) that is preconfigured with the user's chosen units | | `utils` | See [the utils documentation](/reference/api/utils) | | `Bezier` | The [bezier-js](https://pomax.github.io/bezierjs/) library's `Bezier` named export | | | **_Return value_** | | `part` | Your draft method **must** return this | :::tip Please note that there is no `optionalMeasurements` property. Instead, optional measurements are accessed via the 'measurements' property. :::