         let sampleCount = samples.length / Int(sampleSize)
         return CFTimeInterval(sampleCount / Int(samplesPerSecond))
     }
-
-    ///
-    /// Computes the time range of the sensor data block given the
-    /// ``sampleSize`` and ``samplesPerSecond``
-    ///
-    func timeRange(sampleSize: UInt8, samplesPerSecond: UInt8) -> TimeRange {
-        return TimeRange(start: startTime, end: endTime(sampleSize, samplesPerSecond: samplesPerSecond))
-    }
-
     
     ///
     /// Computes the end time of the sensor data block given the

    }

    ///
    /// Adds raw ``data`` received from device ``id`` at some ``time``
    ///
    mutating func decodeAndAdd(data: NSData, fromDeviceId id: DeviceId, at time: CFAbsoluteTime) -> Void {
        decode(data, fromDeviceId: id, at: time)
    }
    
}

    ///
    mutating func addSensorData(sensorData: SensorData) {
        sensorDatas += [sensorData]
    }
    
    ///
    /// Removes ``SensorData`` elements whose end time is before ``time``
    ///
    mutating func removeSensorDataEndingBefore(time: CFAbsoluteTime) -> Void {
        sensorDatas = sensorDatas.filter { sd in
            let endTime = sd.endTime(self.header.sampleSize, samplesPerSecond: self.header.samplesPerSecond)
            return endTime < time
        }
    }
    
    ///
