still working out some architecture