messy but working, not always very gulpy