Here we play arround react useContext and useReducer hooks to easily manage states across more complex components