move body things to own namespace and use body factory