refactored View layer