update, add tests