require chain revised