ok, I think I will reword this whole function :)