refactor and work on view abstractions