Adding more flexibility and some examples of usage