checkpoint - lots of business logic added