class SmartRegisterClients extends ArrayList<SmartRegisterClient> {

    public SmartRegisterClients applyFilter(final FilterOption villageFilter, final
    ServiceModeOption serviceModeOption, final FilterOption searchFilter, SortOption sortOption) {
        SmartRegisterClients results = new SmartRegisterClients();
        Iterables.addAll(results, Iterables.filter(this, new Predicate<SmartRegisterClient>() {
            @Override
            public boolean apply(SmartRegisterClient client) {
                return villageFilter.filter(client) && searchFilter.filter(client);
            }
        }));

        serviceModeOption.apply();
        return sortOption.sort(results);
    }

}