redoing data structure vs view
working but needs DRY