added data forwarding to register, mostly completed buffer