this is for lerning purpose