add cascading, completely redo gravity