WIPing refactor still