made parameters dynamic