refactor components into separate package, add configuration placeholder and component interface