lots of updates based on finalized spec