I think it should be easy to change the code so popups can be added to any element (rather than to the document body only). We would need that if we want to use the gaPopup service for the context popup functionality. This the API I'd envision:

```
var popup = gaPopup.create({...});
var overlay = new ol.Overlay({map: map, element: popup.element[0]});
popup.open();
```

This would require doing the compile/link process in the constructor rather than in open. I don't think that's a problem, I indeed don't see any benefit with doing it lazily, as all popups will be opened.

No need to do anything for now. Just comments for future work.

Note: I don't like the ol3 Overlay API. I'd prefer doing `map.addOverlay(overlay)`. That would be more consistent with the rest of the ol3 API. I need to take that discussion to the ol3 mailing list I guess.