[minor] allocate from freelist