diff --git a/src/lib.rs b/src/lib.rs
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -23,6 +23,7 @@ pub mod bigwise {
 
     use rand::{Rand, Rng};
     use std::fmt::{self, Debug, Formatter};
+    use std::ops::BitAnd;
 
     /// A type that supports bitwise operations.
     ///
@@ -33,7 +34,8 @@ pub mod bigwise {
     /// the exact same type, and not two different types that both implement
     /// `Bigwise`.
     ///
-    pub trait Bigwise : Rand + Debug + Eq {
+    pub trait Bigwise : Rand + Debug + Eq +
+                        BitAnd /*+ BitOr + BitXor + Not + Shl + Shr */{
 
         /// Number of bits stored.
         fn size() -> u32;
@@ -265,6 +267,14 @@ pub mod bigwise {
         }
     }
 
+    impl BitAnd for Bw64 {
+        type Output = Self;
+
+        fn bitand(self, rhs: Self) -> Self {
+            self.and(&rhs)
+        }
+    }
+
     impl Rand for Bw64 {
         fn rand<R: Rng>(rng: &mut R) -> Self {
             Bw64(rng.next_u64())
@@ -526,6 +536,14 @@ pub mod bigwise {
         }
     }
 
+    impl<T> BitAnd for BwPair<T> where T: Bigwise + Copy {
+        type Output = Self;
+
+        fn bitand(self, rhs: Self) -> Self {
+            self.and(&rhs)
+        }
+    }
+
     impl <T> Rand for BwPair<T> where T: Bigwise {
         fn rand<R: Rng>(rng: &mut R) -> Self {
             BwPair {
