forked from: Perlin

