Designing distributed learning environments with intelligent software agents