Base implementation should be pretty simple, but might be an expensive operation. Perhaps there are faster alternatives?