Code refactoring for M2

Issue #10 new