Haffner analysis