add log; refine __initialize__; add apply and filter func