factor out nats - a manual implementation and a singletons library
implementation
Rearranging