add action decorator and replace context with environ