adding all functionalities including custom tip percentage