First stab at an ODE solver