calculator(final version)