initial commit ... will go back to clean up the code later