Roll your Own Redux with useContext & useReducer