no type wrapping, just function wrapping