updates architecture and implementation