added noise generator; haven't tested it yet but it looks good