implemented -a -o