updated and seperated fart
refactored