More annotated and slightly edited