Constructing Component-based Extension Interfaces in Legacy Systems Code