Somewhat functional now! still have some bugs