Three Categories of Context-Aware Systems