begin to move common code to a new base class

also add appropriate nuget packages