implemented a generic views system