add improved_perlin noise generator