added some architecture for next iteration