refine code/fix bugs