start moving common functionality to a common library