Patterns in C: observer