new source from scratch trying to make some stuff cleaner