Make Fixbug works

Change Zab from abstract class to interface since Zab has a protected StateMachine, but in the abstract class this member is never used so fixbug will report error. I guess this is a design issue, if the abstract class only has a proctected member but no method accesses the member then it doesn't make sense make Zab an abstract class.