Component separation

Split various components into separate modules