better controller detection