implemented better delegation