in the process to abstract/functionalize the code
functionalize part II, bloody enforcer and its counters, find way to do this right
functionalize part III, with class