Try to abstract common components into separated module