more robust implementation of indirect_movable traits