Watchable primitives should provide a way of creating fields that are settable and observable, as well as observable derived values that can be computed using other watchable values. For example:
const someField = new Field(25);
const someDerivedValue = new Derived(watch => {
return watch(someField) * 4;
});