simplify code: no cross-calling betw type&provider

we *simply* override value and value= and be done with it.

in order to make sure that `value` actually works, we *just* have to set
all other properties it needs ;)