restructured to have both complete and code-along versions