basic assemble function working