crank-nicolson seems to work