reduce compile dependency