initial changes, update requirements, customize for my needs