Added alot of documentation