rebuilt as class method