using an Observable.create due to performance reasons