implementing arg passing