rewrite method & structure