source instead of exec does away iwth need to source functions repeatedly