First impl. This has bugs. We need sleep.