very informative, a bit lengthy though...