new feature : consume function