refactored observable, got rid of more clutter, tb() selector behaviour changed to return sub-object