forked from: ColorfulRiver

