Starting to write implementation, beginning with unit tests :)