added components and unit tests