all code that I think are useful in future