further refactored for implementation with imagine bundle