correctly build handle lazily