working and a little less messy