less heap allocation