Added in-depth documenation