finished abstract general calculator