* add middleware feature
* remove component feature