have something that works, but I'm not too happy with it. Going to do a new approach