sub predeclarations and calls