handle all special cases