why overwriting the constructor ?