Add more documentation, add additional tests