Update documentation

A lot of work has gone into this, so lets hope that this is suitable.