Added initial code with initial tests