added lots of docs