for self learning