notes: foreword
notes: preface
notes: 1 building abstractions with procedures