 
 //: Convenience aliases
 //: -------------------
-/*typealias Vec = Vector<NativeStorage<Float>>
-typealias RowVec = RowVector<NativeStorage<Float>>
-typealias ColVec = ColumnVector<NativeStorage<Float>>
-typealias Mat = Matrix<NativeStorage<Float>>
+typealias F = NativeStorage<Float>
+typealias I = NativeStorage<Int>
 
 //: Creating vectors
 //: ----------------
-let v1 = Vec([1, 2, 3, 4])
-print("\(v1)")
+let v1:Tensor<F> = colvector([1, 2, 3, 4])
+String(v1)
 
-let v2 = ColVec([1, 2, 3, 4])
-print("\(v2)")
+let v2:Tensor<F> = rowvector([1, 2, 3, 4])
+String(v2)
 
-let v3 = RowVec([1, 2, 3, 4])
-print("\(v3)")
+let v3:Tensor<F> = vector([1, 2, 3, 4], axis: 0)
+String(v3)
 
-let v4 = Vec([1, 2, 3, 4], axis: 0)
-print("\(v4)")
+let v4:Tensor<F> = vector([1, 2, 3, 4], axis: 1)
+String(v4)
 
-let v5 = Vec([1, 2, 3, 4], axis: 1)
-print("\(v5)")
+let v5:Tensor<F> = vector([1, 2, 4, 5], axis:2)
+String(v5)
 
-let v6 = Vec([1, 2, 3, 4], axis: 2)
-print("\(v6)")
 
 // integer vectors
-let iv1 = RowVector<NativeStorage<Int>>([1, 2, 3, 4, 5])
-print("\(iv1)")
+let iv1:Tensor<I> = rowvector([1, 2, 3, 4, 5])
+String(iv1)
 
 //: Vector indexing
 //: ---------------

v2[1] = 20

// ranges
let vr1 = v1[0...2]
print("\(vr1)")

vr1[0...2] = Vec([1, 2, 3])
print("\(vr1)")

//: Vector operations
//: -----------------

//: -----------------
String(m1)

let v14:Tensor<F> = colvector([1, 1, 1])
let v15:Tensor<F> = m1⊙v14
String(v15)

let m3:Tensor<F> = tensor([[1, 2, 3], [1, 2, 3]])
let m4:Tensor<F> = m1⊙m3.transpose()
String(m4)


let s = Extent(3)
let s2 = Extent(s, over: 5)
s2.dims
