copied from https://github.com/StoneBlue/ASET-Consolidated-Props/issues/28
copied from StoneBlue#28