added recycle function