abstract prototyped functions