using mixins instead of cbv