add migration functionality