I am working on a view that displays a grid of core animation layers. When I remove a layer I want that layer to fade out and have the other layers move to fill the gap. This almost works the way I want it to using implicit animations. The only problem is that the layers that should move fade out while a copy of those layers move to the new position. How can I change that behavior so that layers just move instead of move and fade?

To remove a single layer I just do `[theLayer removeFromSuperLayer]` and then call my layout routine on the container layer which does this:

```
CGFloat x = 0;
CGFloat y = CGRectGetMaxY( [layer bounds] ) - buttonHeight - buttonVPadding;
for (CALayer *l in [layer sublayers]) {
    if ([layer bounds].size.width < x + buttonWidth) {
        x = 0;
        y -= buttonHeight + buttonVPadding;
    }
    CGRect bounds = CGRectMake( 0, 0, buttonWidth, buttonHeight );
    [l setBounds: bounds];
    [l setPosition: CGPointMake( x, y )];
    x += buttonWidth + buttonVPadding;
}

```

I tried overriding the default animation behavior in `- (id<CAAction>)actionForLayer:(CALayer *)layer forKey:(NSString *)event;` but I couldn’t find out which events to override to get the desired behavior.