create Module abstract class and update license header