start a new draft logic done
 - the code is hideous and needs refactored, but it works