add fully transformable function
upgrade version