diff --git a/hunks/data/exfilter.js b/hunks/data/exfilter.js
new file mode 100644
index 0000000000000000000000000000000000000000..9795e1a3f00e476f72f522587c801c65ef116b9d
--- /dev/null
+++ b/hunks/data/exfilter.js
@@ -0,0 +1,33 @@
+/*
+
+rolling filter,
+
+*/
+
+import { Hunkify, Input, Output, State } from '../hunks.js'
+
+export default function Smooth(){
+  Hunkify(this)
+
+  let inNum = this.input('number', 'vals')
+  let outNum = this.output('number', 'smoother')
+  let reset = this.state('boolean', 'reset', false)
+  let weight = this.state('number', 'weight, 0-1', 0.9)
+
+  let yl = 0
+
+  reset.onChange = (value) => {
+    yl = 0
+  }
+
+  weight.onChange = (value) => {
+    weight.set(Math.max(Math.min(value, 1), 0))
+  }
+
+  this.loop = () => {
+    if(inNum.io() && !outNum.io()){
+      yl = weight.value * inNum.get() + (1 - weight.value) * yl
+      outNum.put(yl)
+    }
+  }
+}
diff --git a/hunks/primitive/counter.js b/hunks/primitive/counter.js
index 729e279f5907106edc18b10492e9ee248330deef..53d20d7c28614f1dccd414e5acce37fea4aeeeac 100644
--- a/hunks/primitive/counter.js
+++ b/hunks/primitive/counter.js
@@ -14,8 +14,8 @@ import {
 function Counter() {
   Hunkify(this)
 
-  let evtInc = new Input('any', 'increment', this)
-  let evtDec = new Input('any', 'decrement', this)
+  let evtInc = new Input('number', 'increment', this)
+  let evtDec = new Input('number', 'decrement', this)
   let resetInp = new Input('boolean', 'reset', this)
   this.inputs.push(evtInc, evtDec, resetInp)