I'd hesitantly agree that actions should compose, but I also think a better API for this common case would be good.

What about something like:

```objc
// View model
_loginAction = 
  [[RACDynamicSignalGenerator generatorWithBlock:^(NSString *username) { ... }] 
    actionEnabledIf:currentlyOnline];

// View controller
loginButton.rac_action = [self.viewModel.loginAction actionBySampling:self.usernameField.rac_textSignal];
```