---
title: Structure of a part
order: 150
---
Let's get rid of the example box first.
Open `design/src/bib.js` and make sure it looks like this:
```js
export default function(part) {
const { Point, points, Path, paths, complete, sa, paperless } = part.shorthand()
// Design pattern here
// Complete?
if (complete) {
if (sa) {
}
// Paperless?
if (paperless) {
}
}
return part
}
```
This is an empty skeleton for a pattern part. Anytime you want to create a new part,
this is a good starting point.
Let's quickly go over the different sections.
Even if there's not much going on yet, it's always good to understand what's going on.
## The draft method
```js
export default function(part) {
// ...
return part
}
```
This is the boilerplate of our `draftBib` method. It takes the part as an argument, and returns it.
If you're new to JavaScript, and don't intuitively _get this_, stick with it. It will become second nature soon enough.
## Using shorthand
```js
let {
Point,
points,
Path,
paths,
} = part.shorthand()
```
This is FreeSewing's **shorthand** method. It returns an object with a bunch of handy helpers
and you use JavaScript's _object destructuring_ to only get what you need.
The example above makes the following variables available:
- `Point`: The Point constructor
- `points`: A reference to the part's points
- `Path`: The Path constructor
- `paths`: A reference to the part's paths
These will make it possible for you to draw points and paths easily.
The following three variables are also needed to create a full-fledged FreeSewing pattern; their function and usage will
be covered in detail [later on in this tutorial](/tutorials/pattern-design/completing-your-pattern/):
- `complete`: create a _complete_ pattern (or not)
- `sa`: include _seam allowance_ (or not)
- `paperless`: allow the pattern to be _paperless_
For now, we only need these so that the pattern skeleton compiles properly.
This will all become clear, but if you're curious, the API docs have all the details
on [the Part.shorthand() method](/reference/api/part/#shorthand).
## Part boilerplate
```js
// Complete?
if (complete) {
if (sa) {
}
// Paperless?
if (paperless) {
}
}
```
This is some more boilerplate that makes sure we respect the `complete`, `sa`, and `paperless` settings.
For now, you don't need to worry about this. Let's just start designing our bib.