Restructred everything AGAIN