various update; improve shape-only case