@PragTob I'm not sure I totally understand your ideas. Let me restate some of what you said and you let me know if I got it.

> The per element defaults should probably be kept in another datastructure.

There are a few cases in which a style has only one element that uses it (wedge) *and* that style has a default (for arc wedge starts false). This is an element default and shouldn't be kept as an instance variable of the app or as a `DEFAULTS` default, but rather in some other datastructure.

> I could imagine us having only per element defaults and when global defaults are set it just updates them . . .

Instead of Common::Style::DEFAULTS, it may be better to to have defaults for each element. i.e.

```ruby
  @app.element_styles[:arc] = {. . . stroke: black . . .}
  @app.element_styles[:arrow]= {. . . stroke: black . . .}
```
and then when a global default is set
```ruby 
Shoes.app do
  stroke red
  arc . . .
end
``` 
it just updates them for every element type. i.e.
```ruby
  def stroke(color)
    shoes_classes.each do |klass|
      @app.element_styles[klass][:stroke] = color
    end
  end
```