touch alternative added. organize code