Exercise.jsx - component concerned only with presentation - it contains JSX, styling and simple presentation logic. Exercise state readers and callbacks are passed as props.createExercise.js - this component handles state, exercise flow, logic, interfaces with WebAudio components and exposes signal readers and functions which Exercise.jsx then uses. withState that allows to combine these 2 in a decoupled way. So that I could easily swap presentation without touching createExercise.js 