at least some lession, will reformat code later