initial commit with tests