* refactoring moving program layers to its own module