complete (almost) draft