Add generics.
Think about implementing TypeArguments