base framework with counter