abstract out component.json