Add component support. closes #4