added function type signatures