implemented amd & delegate