made ComponentList generic and moved it to commons module