Refactor

ongoing pr, opening so we can discuss crit :D