- The stroke color - in this case `(rgba 0 0 0 1)`.
Note that unlike most drawing programs, rakugaki brushes represent color channels with decimal numbers from 0 to 1, rather than integers from 0 to 255.
- Vectors are aggregations of four generic decimal numbers, most often used to represent positions in the wall's Cartesian coordinate space.
Although vectors are mathematically not the same as points, brushes always execute in a coordinate space relative to where you want to draw with the brush, so a separate `(point)` type isn't needed.
But the moment we'll want to change any one of these values, such as the color... we'll have to edit _every_ single occurrence of it!
To solve this, we can use a definition, or _def_ for short.
We'll replace our literal colors with a shared def:
```haku
(def color (rgba 0 0 0 1))
(list
(stroke 1 color (circle (- 8) 0 8))
(stroke 1 color (circle 8 0 8))
(stroke 1 color (circle 0 (- 8) 8))
(stroke 1 color (circle 0 8 8)))
```
And now we can control the color of the entire brush, without having to copy and paste it everywhere!
You can try doing this to the other `stroke` parameters, too - try creating a def `thickness` for the stroke thickness, `distance` for distance from the mouse, and `radius` for the radius of the circles.
At this point, we may be happy with this implementation.
But what if we want to draw four of these shapes, with different colors, next to each other?
This is where _functions_ come in.
A function allows us to store a piece of code for later, and give it some _parameters_, that'll be filled into the resulting value whenever the function is used.
The wall is infinite, but your brush may only draw in a small area around your cursor (~500 pixels.)
Drawing outside this area may result in pixels getting dropped in ugly ways, but it can also be used to your advantage in order to produce cool glitch art.