can now handle any custom fd