move logic for managing beacon wrappers to it's own class