created application layer
refactoring