functional enough for the demo