now with optional fields... ish

still need proper data binding