Arterial Blood Gas Analysis

Authors:  Gillian Kelly / Editor: Jason M Kendall / Reviewer: Michael Perry, Josh Davison / Code: C3AP3, CAP35, CAP36, CAP6, HAP6, GP5, GP9, NepC3, NepP1, RP2, RP5, SLO1, SLO3Published: 19/07/2021


The arterial blood gas (ABG) is one of the most useful investigations performed in the emergency department (ED). It takes mere minutes to perform and analyse on the machines most commonly kept in areas of acute care e.g. the resuscitation room, intensive care, high dependency and coronary care. The most common sites from which to obtain a sample are radial and femoral arteries though it should be noted that sampling is often a painful procedure and local anaesthetic should be used in all conscious patients [1]. The results obtained from an ABG include:

  • Acid-base balance and its component parts
  • Partial pressures of oxygen (O2) and carbon dioxide (CO2) and O2 saturation
  • Several other anions and cations influenced by renal function
  • Haemoglobin, haematocrit and carboxyhaemoglobin
  • Glucose and lactate

Acid Base Balance

There are many anions and cations within body fluids.

One of the most important of these is the hydrogen ion (H+) even though it is present in comparatively low concentrations.

The concentration of Na+ is one million times greater than H+ [2]. Therefore, to ease interpretation of the H+ concentration [H+], it is expressed as pH:

pH = – log [H+]

As the [H+] increases, pH decreases. Normal pH within the body is 7.35-7.45 (equivalent to a H+ ion concentration of 35-45 nmol/litre) at which enzyme reactions are optimised [3].

A buffer is a weak (incompletely ionised) acid or base which minimises changes in pH by taking up or releasing H+ [3].

Within body fluids, there are multiple buffer systems, for example bicarbonate, phosphate and plasma proteins. Additionally, within blood, haemoglobin acts as a buffer [3].

Henderson Hasselbalch Equation

When the buffer is a weak acid (HA), the pH is related to the ratio of base (A) to undissociated acid (HA) concentration. The acid is constantly in flux between its HA and [H+][A] forms, the balance of which is determined by the equilibrium constant (K). The pH can then be expressed as:

pH = pK + log [conjugate base] [acid]

This is the Henderson Hasselbalch equation. The most important buffer system in the body is the carbonic acid/bicarbonate system due to the physiological control (ie. excretion/retention) of its component parts by the lungs and kidneys, i.e. CO2, H+ and HCO3. This relationship is shown as:

CO2 + H2O ↔ H2CO3 ↔ H+ + HCO3

For example, when more H+ is added to the system (e.g. in a metabolic acidosis), this shifts the reaction to the left, forming more carbonic acid. This in turn shifts the reaction further to the left forming easily excretable CO2. The pCO2 is controlled by the lungs and the HCO3 by the kidneys (see the page on bicarbonate control). Note: Henderson Hasselbalch Equation [3]

Bicarbonate Control

Any acid-base disturbance resulting from an abnormality of the extracellular fluid concentration of HCO3 is termed a metabolic disorder, whereas an acid-base disturbance resulting from a change in pCO2 is a respiratory disorder.

Metabolism of carbohydrates, fats etc. within the body generates a continuous amount of H+. This is constantly being buffered by various bases, which therefore need to be regenerated.

In the case of bicarbonate – the primary buffer system in the body – it is continuously reabsorbed by the kidneys in exchange for producing acidic urine: H+ is actively secreted into the tubular lumen, forming H2CO3, then CO2 and H2O. The CO2 then diffuses back into the tubule cells recombining with water to form H2CO3 and then H+ and HCO3. The HCO3 passes back into the blood stream whilst the H+ is actively passed back into the tubular lumen. In effect, it is the active excretion of H+ in the kidney which facilitates HCO3 reabsorption.

85% of HCO3 is reabsorbed by the proximal tubule, 10% by the loop of Henle and the remainder by the distal tubule.

Active excretion of H+ in the kidneys facilitates the reabsorption of HCO3

Note: Page content citation [3]

Carbon Dioxide Control

Carbon dioxide is highly soluble (twenty times more so than oxygen). The transport is by 3 means- i) Dissolved directly in the plasma – approx 10%, ii) as part of the bicarbonate buffer system – approx 70% and iii) bound to haemoglobin- approx 20%.[12]

Chemoreceptors in the medulla and the carotid and aortic bodies sense changes in pCO2 and H+. This is then used to regulate alveolar ventilation. When ventilation rises, pCO2 falls. This occurs because ventilation lowers the alveolar pCO2 below that of mixed venous blood. CO2 molecules then diffuse into the alveolar gas, thus lowering the CO2 concentration in pulmonary capillary blood.

The Relationship Between Arterial pO2 and Oxygen Saturations

The majority of oxygen in transported blood is bound to haemoglobin (Hb). This is measured as oxygen saturation (SaO2). Only 3% is found in a dissolved state, the partial pressure of which is measured in kilopascals (kPa). Normal adult Hb consists of two α and two β polypeptide chains, each attached to an O2-binding iron-containing haem molecule.

As O2 binds to each haem molecule, the haem changes shape (allosteric change) influencing the further binding of O2 to the other haem molecules in the haemoglobin (i.e. binding occurs more readily).

The amount of O2 bound to Hb is related to the partial pressure of O2 in the blood. This is shown in the oxy-haemoglobin dissociation curve, a sigmoid shaped curve.

The curve can shift to the right or the left, depending on factors such as blood pH, temperature, etc. When there is right shift of the curve, the p50 is at a higher partial pressure. Therefore higher O2 levels are needed to saturate 50% of the Hb (i.e. there is lower affinity of Hb for O2). This enhances O2 delivery at the tissues. When there is left shift of the curve, the p50 is at a lower partial pressure. Therefore, Hb holds onto O2 more at a tissue level but will extract it better at the pulmonary capillaries.

Note: Page content citation [3]

The first portion of an ABG assay usually reports pH, pO2 and pCO2 The partial pressure of O2 and CO2 is expressed as either kilopascals (kPa) or millimetres of mercury (mm Hg). Normal values (on inspired room air) are as follows:

pH 7.350-7.450


  kPa mm Hg
pCO2 4.67-6.00 35-45
pO2 10.67-13.33 80-100


Bicarbonate 23-28 mmol/L
Base excess -2 to +2 mmol/L

The base excess is calculated from the other values. It indicates the amount of surplus or deficit base [A-] within the blood. It is only useful in determining the metabolic component of the acid-base disorder.

Acid-base Disturbances

Acid-base disturbances can be of either:

  • Respiratory origin where the disturbance is primarily of CO2 exchange
  • Metabolic origin where the disturbance is due to bicarbonate

The body has a number of defences to these changes but these only minimise the pH disturbance. The pH moves towards normal – this is termed compensation. Correction is when normal pH is restored [3].

  1. The first defence is by buffering as outlined previously. In the extracellular fluid, this occurs almost immediately; intracellular buffering is a little slower. The next compensatory change in pH occurs by altering respiratory rate and therefore blood pCO2. An increase in CO2 reduces the pH:

CO2 + H2O ↔ H2CO3 ↔ H+ + HCO3

↑CO2 shifts the equation to the right → H2CO3 → ↑ H+ i.e. ↓pH
↓CO2 shifts the equation to the left → ↓ H+  i.e. ↑pH

The final compensatory change is renal handling (i.e. excretion) of acid (and subsequent reabsorption of HCO3) as described previously [2].

Learning bite

The body employs various mechanisms to minimise disturbances in acid-base balance – this is called compensation.

Metabolic Acidosis

CO2 + H2O ↔ H2CO3 ↔ H+ + HCO3

‘In metabolic acidosis, there is either additional acid (H+) production on the right side of the equation, or direct loss of bicarbonate which drives the equation to the right, increasing H+ and lowering pH.’

The consequent reduction in pH stimulates the respiratory centre to increase ventilation and lower pCO2. This in turn drives the reaction to the left, lowering both bicarbonate and H+ to achieve compensation. There is also increased H+ secretion in the kidneys (linked to increased HCO3 reabsorption), further lowering H+.

Further classification of a metabolic acidosis depends on the anion gap – the difference between the major plasma cations (Na+ and K+) and anions (Cl and HCO3):

Anion gap = (Na+ + K+) – (Cl + HCO3)

A normal anion gap is in the range 9-14 mmol/l.

Calculating the anion gap often helps identify the cause of the acidosis.
Causes of a raised anion gap metabolic acidosis

A raised anion gap can be due to excess acid production or ingestion contributing extra H+:

  • Methanol poisoning – with formic acid formation
  • Uraemia from advanced renal failure
  • Diabetes also producing ketoacidosis
  • Paraldehyde poisoning – with acetic and chloracetic acid formation
  • Isoniazid / Iron overload
  • Lactate from tissue hypoxia (respiratory compromise, sepsis, ischaemic bowel
  • Ethylene glycol poisoning (with glycolic and lactic acid production) or Ethanol poisoning producing ketoacidosis
  • Rhabdomyolysis
  • Salicylate from aspirin overdose


For example, in a patient with diabetic ketoacidosis, without any compensation:

  • pH    7.22   
  • pCO2   4.8 kPa
  • pO2   12.1 kPa
  • Bicarbonate  15 mmol/L
  • Na+  138 mmol/L
  • K+  4.6 mmol/L
  • Cl-  104 mmol/L

The pH is low, the pCO2 is normal and the bicarbonate is low indicating a metabolic acidosis. The anion gap is raised at 23.6 due to the ketoacidosis.

Causes of a normal anion gap metabolic acidosis

In a normal anion gap acidosis, bicarbonate is lost from the gut or the kidneys and there is a raised chloride, which compensates for the extra cations, thus keeping the gap normal. This occurs as a result of reabsorption of sodium chloride via the kidneys:

  • H+ secretion failure from the kidneys – types 1 and 4 renal tubular acidosis
  • Acetazolamide
  • Renal tubular acidosis (type 2) with loss of HCO3 from the kidneys
  • Diarrhoea – loss of lower GI secretions including HCO3
  • Ureteropelvic fistula – loss of HCO3 containing secretions
  • Post-hypocapnia
  • Spironolactone

Irrespective of its cause, a metabolic acidosis has a detrimental effect on the cardiovascular system: there is impaired cardiac contractility and a reduced response to catecholamines. There is also increased pulmonary vascular resistance and decreased hepatic and renal perfusion. The threshold for ventricular fibrillation is lowered.

Remember: HARDUPS

Note: Page content citation [2-4]

Metabolic Alkalosis

CO2 + H2O ↔ H2CO3 ↔ H+ + HCO3

In a metabolic alkalosis, a high pH is caused primarily by either a raised [HCO3] or reduced [H+]. By adding a base to the equation, it binds to H+ removing the H+ from the system. The equation then moves to the right and the HCO3 rises. A similar shift will also occur following direct loss of H+.

Causes of metabolic alkalosis
  • Direct loss of H+ in gastric secretion:
    • Vomiting
    • Nasogastric suction
  • H+ loss from the kidneys where high aldosterone causes Na+ reabsorption and H+ secretion – Conn’s syndrome
  • H+ shift into cells – hypokalaemia
  • Excess alkali
    • IV bicarbonate administration in large amounts
    • Ingestion of antacids

For example, in a patient with profound vomiting:

  • pH   7.49
  • pCO2   5.4 kPa
  • pO2   10.6 kPa
  • bicarbonate  37 mmol/L

The pH is high indicating an alkalosis due to the direct loss of H+ from the gut. Because the equation moves to the right, the bicarbonate is high, indicating a metabolic disorder.

Note: Page content citation [2,3,5]

Respiratory Acidosis


CO2 + H2O ↔ H2CO3 ↔ H+ + HCO3

In respiratory acidosis there is raised pCO2 as the respiratory system is unable to remove enough CO2 from the body. The reaction is driven to the right, causing a rise in [H+], (i.e. a fall in pH). This inability to remove CO2 is often coupled with a failure to keep up with O2 demand. This is respiratory failure. There are two types of respiratory failure essentially distinguished by the levels of CO2 within the blood and the main driver for ventilation.

Normally, as pCO2 increases, only a small increase (0.1 kPa) will produce a 1-2 litre/minute rise in alveolar ventilation. This effect can be blunted by medication (e.g. opiates and barbiturates), where the CO2 must rise further before ventilation increases. It is also depressed during sleep allowing slightly higher levels of CO2 than normal. In contrast, pO2 levels must fall significantly below normal (i.e. <8 kPa) to stimulate increased ventilation. This hypoxic ventilatory drive is also reduced in sleep and with drugs.

Type 1 respiratory failure is hypoxia with a low or normal PaCO2 due to failure of gas exchange or increased oxygen consumption.

Type 2 respiratory failure is ventilatory failure resulting in hypoxia with a raised PaCO2.

Traditional thinking about the hypoxic respiratory drive has been largely debunked. Worsening hypercapnoea when oxygen is administered in type 2 failure is due to V/Q mismatch and the Haldane effect. Explained here in depth.

A typical arterial blood gas result in acute type 2 failure:

  • pH   7.22
  • pCO2   8.3 kPa
  • pO2   7.2 kPa
  • bicarbonate  25 mmol/L

The pH is low indicating an acidosis. There is hypoxia, indicating a problem with oxygenation and the CO2 is high indicating a problem with ventilation. The bicarbonate is normal indicating that this is an acute problem. Therefore this is an acute respiratory acidosis.

Note: Page content citation [2,3,6]

Respiratory Alkalosis

CO2 + H2O ↔ H2CO3 ↔ H+ + HCO3

In respiratory alkalosis there is low pCO2 and a consequent high pH as a result of the equation moving to the left and lowering H+. pCO2 has been lowered by either hyperventilation or drug-induced stimulation of breathing.

Note: Page content citation [2,3]

Each disorder

Each disorder is shown below with the corresponding labels highlighted in each column in the table


Compensatory mechanisms restore pH towards normal by altering pCO2 and HCO3.

Compensation of metabolic acidosis [2-4]

The lowered pH acts on peripheral chemoreceptors to stimulate the ventilation. Respiratory rate increases and pCO2 falls:

↓CO2 + H2O  ←  H2CO3  ←  H+ + HCO3

[H+] therefore falls, as does [HCO3]. There is also increased reabsorption of HCO3 and increased excretion of H+ from the kidneys but this is not instant.

Compensation of metabolic alkalosis [2,3,5]

Conversely, in metabolic alkalosis, the higher pH acts on the chemoreceptors to reduce ventilation and increase pCO2:

↑CO2 + H2O  ←  H2CO3  ←  H+ + HCO3

The renal response is then to decrease HCO3 reabsorption and decrease H+ excretion. This usually occurs fairly quickly, but if the alkalosis is caused by vomiting, resulting in dehydration, the overriding renal response is to increase Na+ and HCO3 reabsorption. Therefore, effective rehydration will help to more rapidly correct the alkalosis.

Compensation of respiratory acidosis [2,3,6]

The problem here is within the ventilatory system, with the kidneys acting to compensate which can take a significant length of time (up to two days). The [H+] is raised, thus the rate of H+ secretion is also increased. This results in increased HCO3 reabsorption, despite HCO3 already being higher as a result of the equation shifting to the right:

↑CO2 + H2O  →  H2CO3  →  ↑H+ + ↑HCO3

Although the secretion of H+ brings the pH closer to normal, the pH will not be restored to normal without correction of the underlying respiratory disorder.

Compensation of respiratory alkalosis [2,3]

In respiratory alkalosis, the [H+] decreases due to a primary reduction in pCO2. There is therefore less H+ in the renal tubules and reduced H+ secretion. As a consequence, less HCO3 is reabsorbed causing a further fall in [HCO3]. To restore pCO2 and HCO3 completely to normal, the primary ventilatory problem must be corrected (i.e. The respiratory rate must reduce).

Learning bite

The compensatory response of CO2 or bicarbonate is in the same direction as the initial abnormal change of CO2 or bicarbonate.

Compensated acid-base disorders

The table below provides a summary of compensated acid-base disorders.

Mixed Acid-base Picture

A mixed acid-base disturbance is where there is more than one primary disorder at a time. This often occurs in acutely unwell patients. A mixed disorder should be suspected in several circumstances:

  • Where the compensatory response is more or less than expected or does not appear to occur at all
  • It is rare for compensation to achieve a completely normal pH, so if the pH is within normal limits, whilst CO2 or HCO3 are not, then a mixed disorder is likely
  • The proportionality of the response – if the change in HCO3 is not proportional to the change in anion gap in a metabolic acidosis, again, a mixed picture is likely
  • Usually, in simple disorders, the compensatory response (of CO2 or HCO3) is in the same direction as the initial abnormal change (CO2 or HCO3). Therefore, when CO2 or HCO3 move in the opposite direction to each other, a mixed picture is the usual explanation

NB it is impossible to have more than one respiratory disorder in a mixed picture. i.e. a metabolic acidosis and alkalosis can co-exist, but not a respiratory acidosis and alkalosis.

When considering all mixed disturbances, the clinical picture will usually indicate the underlying problem – the blood gas results should always be put in a clinical context.

Learning bite If the results of the blood gas analysis appear conflicting or inconsistent with a single diagnosis, consider a mixed acid-base disturbance – always put the results in the clinical context of your patient.

Note: Page content citation [7]

Metabolic Acidosis and Respiratory Alkalosis

Occurs in:

  • Septic shock
  • Sepsis and renal failure
  • Salicylate overdose
  • Congestive cardiac failure and renal failure
  • Early cardiopulmonary arrest

It can be difficult to distinguish this mixed picture from a compensated primary metabolic acidosis or respiratory alkalosis.

However, several factors will point more towards a mixed disorder:

  • The clinical picture
  • The level of HCO3 (compensation from a respiratory alkalosis rarely causes a fall in HCO3 below 18)
  • The level of CO2 – if this is very low, again, it is unlikely to be from a compensatory response alone

For example, in a patient with septic shock, secondary to a urinary tract infection:

  • pH   7.37
  • pCO2   3.8 kPa
  • pO2   11.6 kPa
  • bicarbonate  12.4 mmol/L
  • lactate   4.5 mmol/L

The patient is hyperventilating, attempting to increase the amount of oxygen to underperfused tissues. The CO2 is therefore blown off, but bicarbonate is very low, indicating a metabolic component. The lactate is high reflecting sepsis and despite all this, the pH is surprisingly normal. Remember not to be falsely reassured by the normal pH – the clinical picture will reveal an unwell patient.

Metabolic Alkalosis and Respiratory Acidosis

Occurs in: 

  • Diuretic therapy (with low potassium) and COPD (poor gas exchange with retention of CO2)
  • Vomiting (loss of H+) and COPD

To distinguish between compensated primary metabolic alkalosis or respiratory acidosis, and a primary mixed disorder, the clinical picture must be considered. Also, if the HCO3 is greater than 45 mmol/l, it is much more likely to be a mixed disorder.

For example, in a patient on long term thiazide medication for hypertension who presents with an acute exacerbation of COPD:

  • pH   7.36
  • pCO2   7.8 kPa
  • pO2   7.8 kPa
  • bicarbonate  48 mmol/L
  • potassium  3.2 mmol/L

It would be easy to be reassured by this patient’s normal pH, but the low potassium and acute presentation of the breathing difficulty should point to this being a more complicated picture. The bicarbonate is unusually high, even for metabolic compensation of a respiratory disorder. The clinical condition of the patient should be treated rather than simply relying on a normal pH.

Metabolic Acidosis and Respiratory Acidosis

Occurs in:

  • Respiratory compromise with hypoxia (producing lactic acid from cellular anaerobic glycolysis)

ABG hallmark: the pCO2 will be raised and the HCO3 reduced

For example, in acute hypoxaemia, secondary to pulmonary embolus with poor tissue perfusion:

  • pH   7.22
  • pCO2   8.4 kPa
  • pO2   8.0 kPa
  • bicarbonate  14.1 mmol/L
  • lactate   3.3 mmol/L

In a simple disorder, it would be expected that the CO2 and bicarbonate would move in the same direction, but in this case, the bicarbonate is low from the metabolic disorder and the CO2 is high from the respiratory component.

Metabolic Alkalosis and Respiratory Alkalosis

Occurs in:

  • Diuretic therapy (low potassium) and pneumonia
  • Vomiting (H+ loss) and congestive cardiac failure (hyperventilation)

ABG hallmark:  the pCO2 will be reduced and the HCO3 raised

For example, in a patient who has been vomiting profusely and is, as a result, highly anxious with raised respiratory rate:

  • pH   7.53
  • pCO2   2.7 kPa
  • pO2   10.9 kPa
  • bicarbonate  34 mmol/L

The clinical picture needs to be considered – this patient is alkalotic with a low CO2, indicating a respiratory component, but the bicarbonate is high, rather than normal or low.

Metabolic Acidosis and Metabolic Alkalosis

Occurs in:

  • The combination of a raised anion gap metabolic acidosis (e.g. uraemia, ketoacidosis, lactic acidosis) and vomiting (loss of H+)
  • The combination of a raised anion gap metabolic acidosis and diuretic therapy (with low K+)
  • Lactic or ketoacidosis and bicarbonate therapy

For example in a patient with diabetic ketoacidosis secondary to infection and vomiting:

  • pH   7.37
  • pCO2   3.4 kPa
  • pO2   10.2 kPa
  • bicarbonate   6.5 mmol/L

A patient with ongoing ketoacidosis who has compensated to the extent that the bicarbonate is only 6.5 is unlikely to have fully restored their pH to normal levels. This is a falsely reassuring picture and the clinical condition should be considered, or the patient could be undertreated. Therefore, if the patient is also vomiting, consider direct loss of [H+].

Other results are detailed below:

  • Potassium: when low, this indicates a possible metabolic alkalosis [5]
  • Chloride : this also has a bearing on metabolic acid-base disorders and is required for calculating the anion gap
  • Lactate: immensely important in the diagnosis of sepsis and global hypoperfusion. Remember, an elevated lactate in the presence of abdominal pain suggests ischaemic bowel
  • Glucose: remember raised glucose with acidosis can indicate ketoacidosis. Glucose is also an important target in the Surviving Sepsis Campaign: it should be maintained above the lower limit of normal, but less than 8.3 mmol/l
  • Haemoglobin: if the Hb is low, there is less O2 carrying capacity within the blood
  • Carboxyhaemoglobin : carbon monoxide (CO) binds to Hb to form carboxyhaemoglobin (COHb); it binds 230-270 times more strongly than O2 and causes a leftward shift in the oxyhaemoglobin dissociation curve (see above), so less oxygen is available to hypoxic tissues. The main early symptom is headache which occurs when levels reach around 10%. But when levels reach 50-70%, seizures and death can result. When breathing air, CO has a half-life of 3-4 hours, but only 30-90 minutes when breathing 100% O2. Hyperbaric oxygen reduces this further [9]
  • A raised COHb level: is typically seen in patients with smoke inhalation, poisoning from faulty central heating boilers and in cigarette smokers where levels may reach as high as 15% [10]. Car exhaust fumes now contain far lower levels of CO since the conversion to unleaded fuel
  1. O’Driscoll BR, Howard LS, Davison AG; British Thoracic Society. BTS guideline for emergency oxygen use in adult patients. Thorax. 2008 Oct;63 Suppl 6:vi1-68.
  2. Berne RM, Levy MN. Principles of Physiology 2nd ed., Mosby, St. Louis, 1996.
  3. Pinnock C, Lin T, Smith T. (eds) Fundamentals of Anaesthesia, 2nd Edn. Greenwich Medical Media Ltd., London, 1999.
  4. Christie P Thomas, Metabolic Acidosis. E-medicine Medscape. Updated: Dec 08, 2020.
  5. Christie P Thomas, Metabolic Alkalosis. E-medicine Medscape. Updated: Dec 10, 2020.
  6. Nazir A Lone, Respiratory Acidosis. E-medicine Medscape. Updated: Oct 14, 2020.
  7. Ranjodh Singh Gill, Respiratory Alkalosis. E-medicine Medscape. Updated: Nov 06, 2019.
  8. Walmsley RN, White GH. Mixed Acid-Base Disorders. Clinical Chemistry 1985; 31/2, 321-325.
  9. Rivers E, Nguyen B, Havstad S, et al. Early Goal-Directed Therapy Collaborative Group. Early goal-directed therapy in the treatment of severe sepsis and septic shock. N Engl J Med. 2001 Nov 8;345(19):1368-77.
  10. Toxbase Poisons Information. Carbon monoxide.
  11. Light A, Grass C, Pursley D et al. Carboxyhemoglobin Levels in Smokers vs. Non-Smokers in a Smoking Environment Resp Care Journal, October 2007 Open forum abstracts.
  12. Lindsay M. Biga, Sierra Dawson, Amy Harwell, et al. The Respiratory System – 22.5 Transport of Gases, In: Anatomy & Physiology. Oregon State University.


  1. Dr. Ahmed Yousif Ali Gouily says:

    Organised, informative and easy to go through

  2. Dr. Sachin Kumar Sekhsaria says:

    a wonderful presentation

  3. pickettna says:

    fantastic session.

Leave a Reply