Merge from descl/upstream