Facilitating constructivist e-learning by software agents