In this paper, we present new approaches to handle drift and shift in on-line data streams using evolving fuzzy systems (EFS), which are characterized by the fact that their structure is not fixed and not pre-determined. When dealing with drifts and shifts in data streams one needs to take into account two major issues: a) automatic detection of, and b) automatic reaction to this. To address the first problem we propose an approach based on the concepts of age and utility of fuzzy rules/clusters. The second problem itself is composed of two sub-problems concerning the influence of the drifts and shifts on: 1) the antecedent parts (fuzzy set and rule structure) and 2) the consequent parts (parameters) of the fuzzy models. To address the latter sub-problem we propose an approach that introduces a gradual forgetting strategy in the local learning process. To address the former sub-problem we introduce two alternative methods: one that is based on the evolving density-based clustering, eClustering (used in eTS); and one that is based on the automatic adaptation of the learning rate of the evolving vector quantization approach (eVQ) (used in FLEXFIS). The paper is concluded with an empirical evaluation of the impact of the proposed approaches in (on-line) real-world data sets where drifts and shifts occur.