move inference implemented