Added some tests, also trying out React.
A bunch of work.