abstract class for all views