more documentation - more hi level explaination