complete freespace function