taking care of all possibilities