d3 now drives other elements, this has led to the separation of concerns being totally messed up so some refactoring is needed but it works