Make Shakr changes with encapsulation, enums and better naming classes