feat: abstract coc