slightly more efficient depending on the situation