This could be broken down into a base signal and a chained `-then:` instead:

```objc
return [[RACSignal
    createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
        @strongify(self);
        
        FRPLoginViewController *viewController = [[FRPLoginViewController alloc] initWithNibName:@"FRPLoginViewController" bundle:nil];
        UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
        
        [self presentViewController:navigationController animated:YES completion:^{
            [subscriber sendCompleted];
        }];
        
        return nil;
    }]
    then:^{
        return [FRPPhotoImporter voteForPhoto:self.photoModel];
    }];
```

This also has the advantage that the command won't be done executing until `voteForPhoto:` finishes. (Currently, it'll finish as soon as the VC is presented).

You could even go one step further and put all of this command's logic (including the below) into one chain:

```objc
RACSignal *authSignal = [RACSignal empty];
if ([[PXRequest apiHelper] authMode] == PXAPIHelperModeNoAuth) {
    authSignal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
        @strongify(self);
        
        FRPLoginViewController *viewController = [[FRPLoginViewController alloc] initWithNibName:@"FRPLoginViewController" bundle:nil];
        UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
        
        [self presentViewController:navigationController animated:YES completion:^{
            [subscriber sendCompleted];
        }];
        
        return nil;
    }];
}

return [authSignal then:^{
    return [FRPPhotoImporter voteForPhoto:self.photoModel];
}];
```