A base view that handles state and properties