 
 // can be either row or column vector
 public class Vector<StorageType:Storage>: Tensor<StorageType> {
-    public init(_ array:[StorageType.ElementType], transposed:Bool=false) {
-        super.init(array: array, shape: Extent(array.count))
+    public init(_ array:[StorageType.ElementType], axis:Int=0, transposed:Bool=false) {
+        var dims = [Int](count: axis+1, repeatedValue: 1)
+        dims[axis] = array.count
+        super.init(array: array, shape: Extent(dims))
         self.transposed = transposed
     }
     

// constrained to be just a column vector
public class ColumnVector<StorageType:Storage>: Vector<StorageType> {
    public init(_ array:[StorageType.ElementType]) {
        super.init(array, transposed: false)
    }
    
    public override init(_ tensor:Tensor<StorageType>, dimIndex:[Int]?=nil, view:StorageView<StorageType>?=nil) {

// constrained to be just a row vector
public class RowVector<StorageType:Storage>: Vector<StorageType> {
    public init(_ array:[StorageType.ElementType]) {
        super.init(array, axis: 0, transposed: true)
    }
    
    public override init(_ tensor:Tensor<StorageType>) {
