major changes, thanks to stephanie's help