Refactored to have action model responsible for calculation