begin to control types passed to functions