diff --git a/src/main.zig b/src/main.zig
index dd89d4a..ae66d5b 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -78,7 +78,6 @@ pub const Component = struct {
     x: u16 = 0,
     y: u16 = 0,
 
-    state: *anyopaque,
     processFn: *const fn (*Component) void,
 };
 
@@ -89,13 +88,23 @@ pub const Circuit = struct {
 };
 
 pub const Battery = struct {
-    pub fn process(component: *Component) Signal {}
+    component: Component = .{ .processFn = process },
+    value: f32,
+
+    pub fn process(component: *Component, inputs: []*Signal) []Signal {
+        _ = inputs;
+        const self: *Battery = @fieldParentPtr("component", component);
+        return &[_]Signal{.{
+            .digital = std.math.sign(self.value),
+            .analog = self.value,
+        }};
+    }
 };
 
 pub const Signal = struct {
-    digital: i2,
-    analog: f32,
-    color: u24,
+    digital: i2 = 0,
+    analog: f32 = 0.0,
+    color: u24 = 0,
 };
 
 // pub const Wire = struct {