all code for leaning and practise