almost finalized but not quite but good for the demo