initial work, still porting things over from the last version