ref impl