use type assignment syntax
refactor generics section to use custom types