Revised all but last two sections