type analysis