there has GOT to be a better way to do this