Initial modulized code. Commit to be REBASED.