avoid circular module dependency