completed crossfade implementation