Add first integration test and passing implementation