more on pattern matching and adts