documented, and nicely using tests