Add Offer model and refactor Place and BaseModel