basic implementations of all conneg, changes to type abstractions