just some function shuffling