abstract data access via interface