added function-centric functionality