added garbage collector