added noise implementation