// we use defer, to be sure the logic below used to compose final observable
// will be executed at subscription time (with up to date state at the time,
// when it will be needed)
// we use defer, to be sure the logic below used to compose final observable
// will be executed at subscription time (with up to date state at the time,
// when it will be needed)