Final versions of Parts I and II
Clean up and comment Ephemeral.scala