implement AND completely