fully working camera. code is still messy though