added shapeshift logics