added boolean operations