added component support and a first component (untested!)