more explicit `clone` api