I agree with you that this should be changed, but at time I was writing this code, I knew it would be a really nice approach using a builder approach to set options/attributes, but it is true that calling two asMap is a bit redundant. I thought about attributes method returning the AttributesBuilder so you can integrate all of them inside a single call, something like:
```java
Map att = OptionsBuilder.options().toDir(outputDirectory).attributes().backend(backend).asMap();
```
but this approach could mean that when you start defining attributes you cannot set more options, or for example I could implement something like:

```java
Map att = OptionsBuilder.options().toDir(outputDirectory).attributes().backend(backend).get().compact(compact).asMap();
```

With that approach you can still setting options after setting attributes, but as you can see you need the get() terminator.

But of course you could avoid using the terminator, but in this case you must duplicate the methods of options builder inside attribute builder.

For this reason I decided to keep as simple as possible at first version, but we can think another approach of course.