put function wrapping in an external function
experimental: derived topics