     
     let name: String
     let actionLimit: Double?
-    let timeLimit: Double?
+    let timeLimits: [String:Double]?
     let restTime: Double?
     
-    init(name: String, actionLimit: Double?, timeLimit: Double?, restTime: Double?) {
+    init(name: String, actionLimit: Double?, timeLimits: [String:Double]?, restTime: Double?) {
         self.name = name
         self.actionLimit = actionLimit
-        self.timeLimit = timeLimit
+        self.timeLimits = timeLimits
         self.restTime = restTime
     }
     
     func copyTo(m: Meter) {
         m.actionLimit = actionLimit
-        m.timeLimit = timeLimit
+        m.timeLimits = timeLimits ?? [String:Double]()
         m.restTime = restTime ?? 0
     }
 }

    
    func add(x: Double, now: Double) {
        actionCost += x
        if has(timeLimit) {
            firstActed = firstActed ?? now
        }
    }
    
    func rest(lastActed: Double, now: Double) -> Double {

    }

    func configure() {
        setMeters([MeterConf(name: "s", actionLimit: nil, timeLimits: ["s": 60], restTime: 90), MeterConf(name: "m", actionLimit: nil, timeLimits: ["s": 300], restTime: 900), MeterConf(name: "d", actionLimit: 0, timeLimits: ["s": 0, "m": 0], restTime: nil)])
    }

    init(clock: (() -> Double), makeFile: ((path: String?, mode: String, errorLog: ErrorLog) -> File), root: String, errorLog: ErrorLog) {
