could have been a little cleaner but I am picky