some architecture changes