refactored to use Amount objects in interfaces