[WIP/RFC] Rewrite things

this could be written as

```php
if (!empty($this->decorators)) {
      $flattenedDecorators = call_user_func_array('array_merge', $this->decorators);
}
```

The empty check is needed because array_merge requires at least 1 arg