broke out code into generic manager