Rewrote the documentation