Should be mostly fleshed out, now bug fixes!