on purely_functional_state (incomplete)
Merge branch 'purely_functional_state'