Fleshed out portions, docstrings, added convience methods.