overhaul pretty much complete, just need to update function interfaces etc