Added optimized noise generation, avoids abstract members and uses proxies.