full version awaiting cosmetic changes