Functional PartI.  Non-functional PartII.