add docode function