at least one per observer, missing else + tests