reduce allocation count