add .cache to gitignore
implement union method