generic class based views with enhanced functionallity