Switch to prototypes, pass up args, allow use of new()