 // MARK: - All Elements Views
 extension TensorSlice {
     
-    public var allElements: AnyRandomAccessCollection<Element> {
+    var allElements: AnyRandomAccessCollection<Element> {
         return AnyRandomAccessCollection(AllElementsCollection(array: self))
     }
     
-    public subscript(linear linearIndex: Int) -> Element {
+    subscript(linear linearIndex: Int) -> Element {
         return self[convertIndices(linear: linearIndex, stride: stride)]
     }
     

// MARK: - Slice Indexing
extension TensorSlice {
    
    public subscript(indices: [TensorIndex]) -> Tensor<Element> {
        return Tensor(TensorSlice(baseTensor: self, viewIndices: indices))
    }
    
    public subscript(indices: TensorIndex...) -> Tensor<Element> {
        return Tensor(TensorSlice(baseTensor: self, viewIndices: indices))
    }
    


import Foundation

struct TensorSlice<T>: TensorProtocol {
    
    // MARK: - Associated Types
    
    typealias Element = T
    
    // MARK: - Underlying Storage
    
