basic prototyped and constructors