some gc function modified to be defulat