add third move type
split move and init