implemented param passing