THIS CODE IS SO BAD