tweaked API to allow observer context setting, both by user and by subsets. initialisation now happens by default
updated tests to reflect changed API