initial abstract interface commit