lots of new code! still broken