experimental dependency injection in Go