add details about the procedure, add algorithm optimization ideas