lots o changes as per feedback