refactoring, layer added