Design

This pull request covers #6, #7 and #20