These are standard "api" level functions that need per target implementations, but should all maintain the same signature.