refactored Bottle