refactored to framework module, adding generic collection/view