   # the direction of its gaze, and where it's headed
   drawHead: ->
     inc = @visualAngle() * qt
-    @drawEye inc, 1
-    @drawEye -inc, 1
-  drawEye: ( inc, r ) ->
+    @eyeSize ?= @calcEyeSize()
+    @drawEye inc
+    @drawEye -inc
+  calcEyeSize: ->
+    ratio = @visualRange() / @genes.visualRange[2]
+    size = ratio * @radius / 4
+    Math.max size, .75
+  drawEye: (inc) ->
     a = @angle + inc
     [ x, y ] = @edgePoint a
-    @drawCircle x, y, r, 'black'
+    @drawCircle x, y, @eyeSize, 'black'
   drawTail: ->
     a = @angle + Math.PI
     [ x1, y1 ] = @edgePoint a

    return unless radius > 0
    ctx = @universe.ctx
    ctx.beginPath()
    ctx.arc x, y, radius, 0, Math.PI*2
    ctx.fillStyle = color
    ctx.fill()
  setAttributes: ( options = {} ) ->

# constants
qt  = Math.PI / 2
tau = Math.PI * 2

# general handle on everything; keeps track of geometry of entities it contains
class Universe
