added C implementer