user function prototypes
use 'astyle' to adjust formatting