some improovement in analysis