add primitive
separate implementation from header file
Merge branch 'yoshimura_yuu_tc' into yoshimura_yuu