I've made this overly complicated