make it instance-based