Basic functionality is almost done.