use reinterpret cast for backend