added union and intersection types