element default value added, many functions to return self