initial commit, first pass at shared interfaces