initial commit with unit tests