this really doesn't need to use generics