Added Documentation and More Tests