added a bunch of doc blocks