completely abstract go func