wrapper and Base pattern
if no default_value then value should be undefined