replace generic views with CBVs, fixes #51