Added requirements and optional areas to eliminate implementation confusion.