implementer and adapter