add type parameter and extract inferface for simple type and type parameter
add parsing support for type parameters
add type checker for generic type