initial commit of abstract interface