more progress, though viewport is broken and needs work