optional, required proper function