final version, must follow script to work