initial psuedo code