do the right things during assembling, esp return the right buffer