diff --git a/src/libcore/core.rc b/src/libcore/core.rc
index b422d76e02d..f8658b8e46e 100644
--- a/src/libcore/core.rc
+++ b/src/libcore/core.rc
@@ -191,7 +191,7 @@ pub use tuple::{CopyableTuple, ImmutableTuple, ExtendedTupleOps};
 pub use str::{StrSlice, Trimmable};
 pub use vec::{ConstVector, CopyableVector, ImmutableVector};
 pub use vec::{ImmutableEqVector, ImmutableCopyableVector};
-pub use vec::{MutableVector, MutableCopyableVector};
+pub use vec::{OwnedVector, OwnedCopyableVector};
 pub use iter::{BaseIter, ExtendedIter, EqIter, CopyableIter};
 pub use iter::{CopyableOrderedIter, CopyableNonstrictIter, Times};
 
diff --git a/src/libcore/prelude.rs b/src/libcore/prelude.rs
index 3d5139a2d32..f2f6659278d 100644
--- a/src/libcore/prelude.rs
+++ b/src/libcore/prelude.rs
@@ -21,7 +21,7 @@ pub use tuple::{CopyableTuple, ImmutableTuple, ExtendedTupleOps};
 pub use str::{StrSlice, Trimmable};
 pub use vec::{ConstVector, CopyableVector, ImmutableVector};
 pub use vec::{ImmutableEqVector, ImmutableCopyableVector};
-pub use vec::{MutableVector, MutableCopyableVector};
+pub use vec::{OwnedVector, OwnedCopyableVector};
 pub use iter::{BaseIter, ExtendedIter, EqIter, CopyableIter};
 pub use iter::{CopyableOrderedIter, CopyableNonstrictIter, Times};
 
diff --git a/src/libcore/vec.rs b/src/libcore/vec.rs
index 8cfbad4ec6b..ae72e425d20 100644
--- a/src/libcore/vec.rs
+++ b/src/libcore/vec.rs
@@ -1599,13 +1599,6 @@ pub trait ImmutableVector<T> {
     pure fn filter_map<U: Copy>(f: fn(t: &T) -> Option<U>) -> ~[U];
 }
 
-pub trait ImmutableEqVector<T: Eq> {
-    pure fn position(f: fn(t: &T) -> bool) -> Option<uint>;
-    pure fn position_elem(t: &T) -> Option<uint>;
-    pure fn rposition(f: fn(t: &T) -> bool) -> Option<uint>;
-    pure fn rposition_elem(t: &T) -> Option<uint>;
-}
-
 /// Extension methods for vectors
 impl<T> &[T]: ImmutableVector<T> {
     /// Return a slice that points into another slice.
@@ -1671,6 +1664,13 @@ impl<T> &[T]: ImmutableVector<T> {
     }
 }
 
+pub trait ImmutableEqVector<T: Eq> {
+    pure fn position(f: fn(t: &T) -> bool) -> Option<uint>;
+    pure fn position_elem(t: &T) -> Option<uint>;
+    pure fn rposition(f: fn(t: &T) -> bool) -> Option<uint>;
+    pure fn rposition_elem(t: &T) -> Option<uint>;
+}
+
 impl<T: Eq> &[T]: ImmutableEqVector<T> {
     /**
      * Find the first index matching some predicate
@@ -1740,7 +1740,7 @@ impl<T: Copy> &[T]: ImmutableCopyableVector<T> {
     pure fn rfind(f: fn(t: &T) -> bool) -> Option<T> { rfind(self, f) }
 }
 
-pub trait MutableVector<T> {
+pub trait OwnedVector<T> {
     fn push(&mut self, t: T);
     fn push_all_move(&mut self, rhs: ~[T]);
     fn pop(&mut self) -> T;
@@ -1753,18 +1753,7 @@ pub trait MutableVector<T> {
     fn retain(&mut self, f: pure fn(t: &T) -> bool);
 }
 
-pub trait MutableCopyableVector<T: Copy> {
-    fn push_all(&mut self, rhs: &[const T]);
-    fn grow(&mut self, n: uint, initval: &T);
-    fn grow_fn(&mut self, n: uint, op: iter::InitOp<T>);
-    fn grow_set(&mut self, index: uint, initval: &T, val: T);
-}
-
-trait MutableEqVector<T: Eq> {
-    fn dedup(&mut self);
-}
-
-impl<T> ~[T]: MutableVector<T> {
+impl<T> ~[T]: OwnedVector<T> {
     #[inline]
     fn push(&mut self, t: T) {
         push(self, t);
@@ -1817,7 +1806,14 @@ impl<T> ~[T]: MutableVector<T> {
 
 }
 
-impl<T: Copy> ~[T]: MutableCopyableVector<T> {
+pub trait OwnedCopyableVector<T: Copy> {
+    fn push_all(&mut self, rhs: &[const T]);
+    fn grow(&mut self, n: uint, initval: &T);
+    fn grow_fn(&mut self, n: uint, op: iter::InitOp<T>);
+    fn grow_set(&mut self, index: uint, initval: &T, val: T);
+}
+
+impl<T: Copy> ~[T]: OwnedCopyableVector<T> {
     #[inline]
     fn push_all(&mut self, rhs: &[const T]) {
         push_all(self, rhs);
@@ -1839,14 +1835,17 @@ impl<T: Copy> ~[T]: MutableCopyableVector<T> {
     }
 }
 
-impl<T: Eq> ~[T]: MutableEqVector<T> {
+trait OwnedEqVector<T: Eq> {
+    fn dedup(&mut self);
+}
+
+impl<T: Eq> ~[T]: OwnedEqVector<T> {
     #[inline]
     fn dedup(&mut self) {
         dedup(self)
     }
 }
 
-
 /**
 * Constructs a vector from an unsafe pointer to a buffer
 *