state machines = automata that take a finite number of inputs and output a finite amount of output.
derived state: selectors = functions that receive state as a paramater and make a determination based on that state.
function isOld(state){return state.age > 50}
observer = a function for watching state changes within a state machine. probably using mutationObserver. //need to figure out a way to update a component based on mutation to the state