revamp the start()