handles negatives, is shorter/faster