The way the code is written today, the heartbeat pkg clearly needs the machine pkg for the `machine.Machine` argument to `MachineHeartbeatFunc`. If this function were in the `machine` package, the dependency on the `registry` pkg causes a loop through job, unit, machine, registry, job:

```
../../../../../src/fleet/gopath/src/github.com/coreos/fleet/fleetctl/fleetctl.go:22:2: import cycle not allowed
package github.com/coreos/fleet/fleetctl
	imports github.com/coreos/fleet/job
	imports github.com/coreos/fleet/unit
	imports github.com/coreos/fleet/machine
	imports github.com/coreos/fleet/registry
	imports github.com/coreos/fleet/job
```