Let's start with some requirements and also tests