elaborated with examples