General refactor. Add shadow viewport