final project kind of buggy but working