These generics affect a large amount of code and make reading subsequent patches of dynamic entities hard to follow, so I'm splitting the task out.