initial commit with some interfaces