moved components to separate module