added high level documentation