Massive changes all over the code to accomodate this. Many things are not finished. Consider this a backup safety commit