abstract level data module