there's probably a better way to do this