ok ,refactor almost over