Ask yourself, given we are operating in a different scope, how do we get the data we create back to the calling scope? We *return* it. Well written code will be set up to receive it.

It makes little sense to compute the volume of a granary if we do not know the area of its base. Here we set that up…

```
const area = radius => Math.PI * radius ** 2;
```

Given a radius, the above function returned the area of a circle with that radius. That is the area of our base. Now we compute the volume of our granary given a height.

```
const volume = (radius, height) => area(radius) * height;
```

The *area* function is *returning* a value that is being then used in the multiplication that produces a final result. Lo and behold, our function returns that result to us.

```
console.log(volume)
```

Let’s consider the granary. We are told that a 22 foot by 33 foot granary will hold 10000 bushels. Do we believe that?

Our code smarts kick into action…

```
const area = radius => Math.PI * radius ** 2;
const volume = (radius, height) => area(radius) * height;
const bushels = volume(11, 33) / 1.24446
console.log(bushels)
```

What do we get as a result?

```
10080.178925625609
```

So the information we were given was correct, with a margin, to boot.