Fixed up naming convention and better generics