avoid constructing unnecessary objects