implement changeable attribute order