lua factory method restructure

  * does not create object
  * adds behaviors to passed object