Closes #13 (Add component model)

Closes #13 (Add component model)