Rewrite to use Bullet and other various changes