Added ComponentBuilder interface to allow easier abstraction of builders