Trying to make the free function perfect.