add pre and post hooks logic + put all call to self to static