new fade function, works better