Erick review

Your code is seriously very clean and runs smoothly. That said, I
think it'd be worth your while to look into avoiding losing progress
when the client is reset.