update is now recursive, fixes #26