circular dependency is a relation between two or more modules which either directly or indirectly depend on each other to function properly.