abstract out units