i have a branch for this and made a lot of progress already, needs testing