repackaged some internal classes