Potion implementation much refactored to take advantage of the new enums. Still buggy though.