implement runner and its tests