supports both destructive and non