todo: finish the analyzer