Week3 part2

Including:

- Use macros and shared examples in tests
- Implement the first feature spec
- A more complicated feature spec