factor this into a private method with no annotations