calculator(more clean up)