variadic functions (wip) and proper opaque types