adding some high level documentation