# Component Replacement

Business Components provide a simple extension mechanism where base-package code can be made available to be replaced by customizations. For this to take place, two things must happen:

- A component is added as described above with the `customizationReplaceable` annotation attribute set to `true`.
- A replacement component is created that implements the business interface of the original component and sets the `replacementComponent` attribute to `true`.

An example replacement of the `PersonFinders` component is shown below. Component implementations are registered in the same order as the application stack, that is: `base` followed by `ccb`, then followed by`cm`. After the component is defined in one application, derived applications (higher on the stack) can replace the implementation.

    			package com.abcutilities.cis.customizations.person;
    			/**
    			 * @BusinessComponent
    			 *   (replacementComponent = true)
    			 */
    			public class CustomizedPersonFindersImpl
    			    extends GenericBusinessComponent
    			    implements PersonFinders {

    			    public Integer findCountByNameType(PerOrBusLookup nameType) {
    			        ... customized code ...
    			    }
    			    ...
    			}

Parent topic: Maintaining Business Components