moved things so we don't have to deal with weird generics.