adds functional perspective
adds guidance for extension
adds discussion of design decisions