added new calculation mechanism