This page contains most foobar2000 Legacy components available at time of history last update.
- 1 Official components
- 2 3rd party components
- 2.1 User Interface Modules
- 2.2 User interface add-ons
- 2.3 DSP
- 2.4 Input
- 2.5 Visualisation
- 2.6 Other
- 3 External links
The following components are created and maintained by the foobar2000 development team. Support for them should be asked for in the Support forum
Included in the installer
The following components are required for installation.
- Default User Interface (foo_ui_std)
- Standard DSP Array (foo_dsp_std) · Equalizer, resampler, advanced limiter, hard limiter, stereo to 4 channel upmixer and a couple other effects
- Standard Input Array/FFmpeg Decoders (foo_input_std)
In addition to foobar2000's core functionality, the following components can be installed as needed, in the "Optional features" section of the installer.
- Audio CD support (foo_cdda) · Adds Support for Audio CD playback.
- Album List (foo_albumlist) · Gives quick access to Media Library Content with customizable tree view
- Equalizer DSP (foo_dsp_eq) · An 18-band equalizer
- ReplayGain Scanner (foo_rgscan) · Advanced solution for volume matching
- Converter (foo_converter) · Converts files to WAV or any other formats using command line encoders
- File Operations (foo_fileops) · Renames, moves, or copies files according to specified patterns
- Archive Reader (foo_unpack) · Adds support for playing files directly from ZIP RAR and GZIP archives
- Freedb Tagger (foo_freedb2) · Tag retrieving support from freedb service for any set of files (mp3,mpc,flac,...-not only CDDA tracks)
These components are provided as separate downloads, found on the Additional Components page.
- ABX comparator (foo_abx) component for double blind listening tests
- ALAC Decoder (foo_input_alac) Apple Lossless (ALAC) decoder
- ASIO support (foo_out_asio) Adds ASIO output support.
- Audio CD Writer (foo_burninate) CD burning support
- Binary Comparator (foo_bitcompare) Performs binary comparison between two or more tracks and reports differences.
- Decoding Speed Test (foo_benchmark) Measures decoding speed of audio files.
- File Integrity Verifier (foo_verifier) Checks specified media files for decoding errors.
- Impulse Response Convolver (foo_convolve) Allows arbitrary effects to be captured and used inside foobar2000. (More Info)
- Kernel Streaming support (foo_out_ks) Allows bit-exact playback bypassing Windows kernel mixer.
- Masstagger (foo_masstag) Automates various tag editing operations.
- Playback Statistics (foo playcount) Collects playback statistics for your Media Library content.
- Quick Tagger (foo_quicktag) Adds customizable context menu commands for quickly setting tag fields to preconfigured values
- Text Tools (foo_texttools) Adds customizable context menu commands for copying information about the selected tracks to Windows Clipboard.
- WASAPI output support (foo_out_wasapi) Adds Windows Audio Session API exclusive mode output support, allowing bit-exact output and muting all other sounds on Windows Vista and Windows 7 systems.
3rd party components
The following components are created and maintained by 3rd-party authors, using foobar2000's SDK. Support for these components should be asked for in the 3rd Party Plugins forum Asking for help directly in the component's thread is usually preferred.
User Interface Modules
Columns UI (foo_ui_columns) Very popular alternate interface for foobar2000 based on a columns and panel layout.
Columns UI introduced components with panel capability which extend the user interface.
User interface add-ons
The default user interface (foo_ui_std), included in the standard installation package, can be extended with the following component(s):
- Chronial's Coverflow (foo_chronflow) Interactive 3D Coverflow.
- Facets (foo_facets) Flexible media library viewer based on linked lists.
- Playlist Organizer (foo_plorg) Advanced playlist manager to organize playlists in a treeview.
- Queue Contents Editor (foo_queuecontents) Edit and view queue contents using an UI Element.
- Quicksearch UI Element (foo_quicksearch) Search toolbar that sends results to a playlist.
- SimPlaylist (foo_simplaylist) Playlist view with album art.
- SimPlaylist Manager (foo_simplaylist_manager) Playlist manager replacement with additional columns.
- Text Display (foo_textdisplay) Displays information about the playing or selected track.
- Waveform Seekbar (foo_wave_seekbar) Element for DUI with seekbar functionality on top of the waveform of the playing song.
Panels extend the functionality of Columns UI components.
- Album Art Panel (foo_uie_albumart) Panel to display album art.
- Album List Panel (foo_uie_albumlist) Displays the database in a treeview using customizable sorting methods (by genre, artist, directory, etc.)
- Bookmarks (foo_uie_bookmarks) Help you remember positions in songs.
- Console (foo_uie_console) Panel version of console. Displays diagnostic messages. Requires Columns UI 0.1.3 beta 1 or newer.
- Cover Flow (foo_bubble_coverflow) The plugin can work either as a UI panel or a standalone window (found in the view menu), and a fullscreen mode for both.
- Dockable Panels (foo_dockable_panels) It allows you to create windows that host columns ui panels as floating windows that can be attached to the side of the main foobar2000 window or each other.
- Egoh Spectrum Analyser (foo_uie_vis_egoh) Similar to the default spectrum analyser.
- ELplaylist panel (foo uie elplaylist) Playlist panel replacement with extensive customization options.
- Explorer Panel (foo_uie_explorer) Displays a treeview of selected disks/folders.
- Graphical Browser (foo uie graphical browser) A panel that allows to browse media library by graphical or text tiles
- Lyrics Panel (foo_uie_lyrics_panel) Display lyrics stored in file tags.
- Music Browser (foo_browser) Panels for Browsing Library, Similar to iTunes. No longer updated. Most have better success CUI's in-built filters.
- Panel Stack Splitter (foo_uie_panel_splitter) Allows you to place objects freely within the foobar2000 window, including panels, text, and images
- Playlist Dropdown (foo_uie_playlists_dropdown) Displays the playlist in a dropdown menu.
- Playlist Tree (foo_playlist_tree) Tree based media library with many available customizations.
- Power Panels (foo_uie_powerpanels) Seekbar and volume transparent version panels. Useful for theming.
- ProjectM Visualisation Panel (foo_uie_vis_projectM) Based on the ProjectM project, which is a reimplementation of Milkdrop under OpenGL.
- Queue Contents Editor (foo_queuecontents) Edit and view queue contents using an UI Element.
- Queue Manager (foo_uie_queuemanager) It provides a window that shows the queue's contents and allows you to delete parts of them or clear the whole queue.
- Shpeck (foo_vis_shpeck) Winamp visualisation plugins wrapper.
- Tabs (foo_uie_tabs) Tabs allows you to break Pauli's Exclusion principle by placing multiple panels in the same position at the same time.
- Typefind (foo_typefind) Provides some in-line search facilities.
- Waveform Seekbar (foo_wave_seekbar) Panel for CUI with seekbar functionality on top of the waveform of the playing song.
- WmpVis (foo_uie_wmpvis) Uses the visualizations from WMP.
- WSH panel (foo_uie_wsh_panel) Windows script host panel.
- ATSurround Processor (foo_dsp_atsurround) Reproduces surround sound information present in many stereo audio material and more.
- Channel Mixer (foo_channel_mixer) Up/down mix to/from 1-6 channels.
- Dolby Pro Logic II wrapper (foo_dsp_pl2) Dolby Pro Logic II engine DLL (dll not included).
- Downmix (foo_dsp_downmix) Downmix AC3, DTS, etc. to stereo.
- FreeSurround (foo_dsp_fsurround) It takes Dolby Surround / Pro Logic I/II encoded stereo music and decodes it into 5.1 sound.
- Surround Pan (foo_dsp_span) WYSIWYG Surround panning.
- 4Front Headphones (foo_dsp_headphones9) · Effects for headphone users.
- BS2D (foo_dsp_bs2p) · Improves headphone listening of regular hi-fi stereo records.
- Crossfeed (foo_dsp_crossfeed) · Filters the music to help reduce fatigue caused by listening to music with headphones.
- Dolby Headphone Wrapper (foo_dsp_dolbyhp) · Dolby Headphone engine DLL.
- Meier Crossfeed (foo_dsp_meiercf) · Software implementation of Meier Audio's natural crossfeed filter.
- Voice Cut Filter (foo_dsp_centercut) Voice cut filter.
- Equalizer split (foo_dsp_eqsplit) A meta-DSP that feeds each channel into a separate equalizer instance.
- XOver (foo_dsp_xover) Implements this digital crossover to achieve active multi-amplification.
- Soundtouch (foo_dsp_soundtouch) Adjust pitch, tempo and rate.
- Tube Sound (foo_dsp_tube) Emulate tube sound.
- VLevel (foo_dsp_vlevel) Dynamic compressor which amplifies the quiet parts of music.
- HDCD Decoder (foo_dsp_hdcd) This DSP component will decode HDCD data in any 16-bit PCM stream passed through it, resulting in 20-bit PCM.
- LPCM - Delta-PCM Converter (foo_dsp_delta) Noise sharpening filter.
- SSRC (foo_dsp_ssrc) Sample rate converter.
- OSS/3D (foo_dsp_oss3ddsp) Audio enhancement. SHAREWARE.
- Stereo Convolver (foo_dsp_stereoconv) Take stereo audio and convolve each channel with two impulse responses.
- Winamp DSP Bridge (foo_dsp_winamp) Allows the use of Winamp DSPs.
- VST 2.4 adapter (foo_vst) Allows Foobar2000 users to use VST 2.4 plug-ins equally with “native” ones.
- George Yohng's VST Wrapper (foo_dsp_vstwrapper) Enables VST plug-ins.
- VST Host (foo_dsp_vst) Adds support to Virtual Studio Technology audio interface.
- AC3 Decoder (foo_ac3) Decodes Dolby Digital lossy audio compression technologies format (AC3).
- DTS Decoder (foo_dts) Decodes Digital Theater Systems (DTS) audio format.
- MIDI Synthesizer Host (foo_midi) Adds decoding support for General MIDI files (.MID) and RIFF MIDI files (.RMI) as well as several proprietary MIDI formats (.MIDS, .GMF, .HMI, .HMP, .MUS, .XMI).
- OptimFROG Lossless Audio Decoder (foo_input_ofr) Decodes both the Lossless (OFR) and DualStream (OFS) audio format.
- QOA Audio Decoder (foo_qoa) · Decodes Quite OK Audio (QOA) audio format.
- Shorten Decoder (foo_input_shorten) Decodes Shorten (SHN) audio format.
- SPDIF Passthrough (foo_spdif) SPDIF passthrough for AC3 and DTS files.
- TAK Decoder (foo_input_tak) Adds support for decoding and tagging TAK files as well as reading embedded album art.
- TTA Audio Decoder (foo_input_tta) Decodes True Audio (TTA) audio format.
- DVD Audio Decoder (foo_input_dvda) Decodes DVD Audio (DVD Audio) Disks.
- ADPCM Decoder (foo_adpcm) Plays GameCube ADPCM audio data and some. (DSP, ADP, GCM, HPS, STM, AST, etc.)
- AdPlug decoder (foo_input_adplug) Adds decoding support for all Adlib FM chip formats supported by the AdPlug library.
- Another Slight Atari Player (foo_asap) ASAP is a player/converter of Atari 8-bit music for modern computers. It provides high-quality, identical to the popular Atari800 emulator, emulation of the POKEY sound chip and the 6502 processor.
- AviSynth decoder (foo_input_avs) Adds decoding support for AviSynth scripts (.AVS), audio only.
- DSDIFF Decoder (foo_input_dsdiff) Adds decoding support for DSDIFF files (.DFF).
- DUMB Module Decoder (foo_dumb) Plays your favorite module files, and then some. (MOD, S3M, XM, IT, 669, PTM, PSM, MTM, UMX)
- Game Emu Player (foo_gep) Plays several emulation formats. (GBS, NSF, SPC, GYM, HES, VGM)
- Ganbatte! (foo_ganbatte) Plays compressed Edlib (.d00, .d01) files.
- Hively Tracker Decoder (foo_input_hvl) Adds decoding support for Hively Tracker files (.HVL) as well as Abyss' Highest eXperience files (.AHX).
- Lunar 2 PCM Decoder (foo_lunar2) Plays audio files found on the original Lunar: Eternal Blue CD (RP*.PCM).
- M1 Decoder (foo_m1) Plays arcade/pinball game sound.
- MDX Decoder (foo_input_mdx) MDX is a MIDI-like format that is designed to be played using the X68000's FM synthesizer.
- NSF Decoder (foo_input_nsf) NSF file is a sound data file containing instructions for the Nintendo Entertainment System (NES) sound hardware.
- PSF Decoder (foo_psf) Plays PlayStation Sound Format (PSF) files.
- QSF decoder (foo_input_qsf) Adds decoding support for Capcom QSound Sound Format files (.QSF/.MINIQSF).
- Reverse (foo_input_reverse) Play music in reverse.
- S98 Decoder (foo_input_s98) Sound format for the NEC PC-98 microcomputer.
- SID Player 2 (foo_sid) Sound chip of Commodore's CBM-II, Commodore 64 and Commodore 128 home computers.
- SNESAPU input (foo_snesapu) Adds an alternative decoder for Super Nintendo SPC Sound Format files (.SPC).
- USF Decoder (foo_input_usf) Decodes sound data ripped directly from a Nintendo 64 video game.
- Musical Spectrum (foo_musical_spectrum) Displays frequencies corresponding to musical notes. Compatible with default UI and Columns UI.
- Peakmeter for Columns UI (foo_uie_peakmeter) Displays the level for each channel in dB.
- Peakmeter and spectrum analyzer (foo_uie_vis_peakmeter_spectrum) Plugin that combines a peakmeter with a spectrum analyzer.
- Channel spectrum panel (foo_uie_vis_channel_spectrum) Visualizes spectrum for each channel.
- Shpeck (foo_vis_shpeck) Winamp visualisation plugins wrapper.
- WmpVis (foo_uie_wmpvis) Uses the visualizations from WMP. Panel version only.
- Alarm (foo_alarm) Starts playback at the specified period of time.
- Automatic BPM Analyser (foo_bpm) Automatically calculate the BPM of songs. Manual BPM calculation also available.
- Autosave & Autobackup (foo_jesus) Allows periodic automatic saving of configuration and other data in foobar2000 and keeping backup copies of such data.
- Channel Usage Visualisation (foo_vis_channelusage) Channel Usage Visualisation.
- EXTM3U Playlist Creator (foo_extm3u) Allow to save current playlist in the EXTM3U format.
- File Date (foo_filedate) Add to file tag date added, accessed, created or modified from context menu entries.
- HyperIM (foo_2hyperim) Provides 19 media macros.
- Infospect (foo_infospect) Displays low level playback information.
- iPod Manager (foo_dop) Experimental iPod plugin for foobar2000 0.9.2+, currently in alpha version.
- Logitech G15 LCD Display (foo_g15lcd) Control the LCD panel on a Logitech G15 keyboard.
- Logitech LCD Display & Visualization (foo_logitech_lcd) Customizable visualizations and track info on the LCD panel on a Logitech G15/G19/Z-10.
- Menu Addons (foo_menu_addons) Adds a few shortcuts in menu.
- Open URL (foo_openurl) Adds a context menu item to open URLs from metadata fields in a web browser.
- Pause On Lock (foo_lock) Pauses/unpauses foobar2000 on workstation lock/unlock.
- Pause on Lock (extended) (foo_lock_ex) Pause playing on workstation lock. Optimized for use with Windows XP/2003.
- Preview (foo_preview) Play only part of each track in the playlist.
- Run (foo_run) Able you to run a external program with the foobar syntax.
- Run Commands (foo_runcmd) Search and execute menu commands.
- Scheduler (foo_scheduler) Plugin for scheduling actions like play, stop, system shutdown/wake up and many more.
- Seek (foo_seek) offers different ways of seeking inside one or more tracks: preview, rewind/fast-forward, loop, and repeat A–B.
- Seekbox (foo_seek_box) Main menu item that pops up a box for seeking to a particular hh:mm:ss time in the current track.
- Send To Device (foo_sendtodevice) Add "Send to Device" feature.
- Shell Link Resolver (foo_lnk) Shell link resolver.
- Unix archive support (foo_unpack_unix) Adds support for reading from Unix Tape Archives (.TAR), gzip files (.GZ), and bzip2 files (.BZ2).
- Unpacker for 7-Zip archive (foo_unpack_7z)
- Unpacker for JMA archive (foo_unpack_jma)
- Unpacker for LHA archive (foo_unpack_lha)
- UPnP/DLNA Renderer, Server, Control Point (foo_upnp)
- Winamp API Emulator (foo_winamp_spam) Designed to create a fake Winamp 1.x window which will act as a wrapper between applications written to use the Winamp API and foobar2000.
- Gasazip Lyrics (foo_gasazip) · Search for lyrics and displays it in external window.
- LyricsDB (foo_lyricsdb) · Search lyrics basing on song's artist title and sometimes album.
- Lyrics Grabber 2 (foo_lyricsgrabber2) · Downloads lyrics and stores them in tags.
- Lyric Show Panel (foo_uie_lyrics)
- Lyric Show Panel 2 (foo_uie_lyrics2) · Downloads and displays lyrics, with LRC/timestamp support.
- Lyric Show Panel 3 (foo_uie_lyrics3) · An update of foo_uie_lyrics2 (More Info)
- Mini Lyrics (foo_ui_minilyrics) · Lyrics viewer for synchronizing and displaying lyrics of the currently playing song.
- OpenLyrics (foo_openlyrics) · Modern replacement for Lyric Show Panel 3.
- Sakura Script Lyrics (foo_sstp_lyrics) · Plays a SAKURA script lyrics to a SSP client.
- AMIP Wrapper (foo_amipwrapper) Complete now-playing plug-in for mIRC, PIRCH, Klient, Bersirc, other IRC and Mail clients, supporting full player control from mIRC, playlist search, clipboard integration, HTTP, dynamic image signatures, etc.
- Listening To (foo_listeningto) Sends NowPlaying information to Miranda IM.
- Miranda IM Notifier (foo_mim_notify) Sends configurable information about the current playing song to Miranda-IM and shows popup windows with this info.
- MSN avatar changer (foo_uie_albumart_msn) Set currently playing song's album art as avatar.
- MSN Now Playing (alt) (foo_msnalt) Show the current song as "Now Playing" in MSN and Windows Live messenger.
- On-Screen Display (foo_osd) On screen display of track information and volume bar.
- On-Screen Display GDI (foo_osd_gdiplus) Same as foo_osd but uses GDI+ for osd drawing.
- Pretty Popup (foo_prettypop) Display a moderately sized popup of song information when a new song plays.
- Titlebar (foo_managed_wrapper) Creates a personal title bar that shows the currently playing song on the top of the screen. Supports custom-made skins.
- Windows 7 Integration (foo_w7shell) Integrates certain features into the Windows 7 Taskbar; seekbar, control buttons, etc.
- Windows Live Notifier (foo_wlm) Shows current song as "Now Playing" in in MSN Messenger and Windows Live messenger (WLM). Supports unicode.
- Audioscrobbler (foo_audioscrobbler) Audioscrobbler will send the name of every song you play on your computer to Last.fm. This effortlessly populates your profile to play radio you like and make personalized recommendations.
- Podcatcher (foo_podcatcher) A podcatcher component for subscribing to, downloading, and playing RSS and Atom podcast feeds in foobar2000.
- Subsonic (foo_subsonic) A component to connect foobar to subsonic servers or subsonic compatible API.
- Vorbis Streamer (foo_vorbisstream) Streams Vorbis and associated metadata to Icecast2 and Shoutcast servers.
- XM Radio Online Player (foo_xm) Allow you to listen to XM Radio channels over the Internet by using XM Radio Online.
- Audioscrobble Charts (foo_scrobblecharts) Generate a playlist from an artist's Last.fm chart. It also allows you to sort a selection in the playlist by the artist's charts.
- Bin Pack (foo_binpack) Creates playlists from a list with a maximum length.
- Command Playlist (foo_cmd_playlist) Add /playlist-activate:"Name" to the foobar command line to activate the named playlist.
- Cuesheet Creator (foo_cuesheet_creator) Cuesheet creator.
- Database Search (foo_dbsearch) Database search.
- Default Video Player (foo_default_videoplayer) Allows you to play your video clips from foobar playlist with default external player.
- Delete Current (foo_deletecurrent) Adds a menu item giving the possibility to delete from computer the current playing track.
- Highlight Playing (foo_highlightplaying) Highlights actual now playing item even when the playlist has been broken.
- History (foo_history) Very basic song history.
- Inactive Tracks (foo_skip) Skips tracks that are marked via a tag as inactive.
- MeowDB (foo_meowdb) Takes the Media Library and outputs the results to a form and uploads it to your server using the cURL library.
- Navigator (foo_navigator) Advanced history component.
- Now Playing Simple (foo_np_simple) Simple now playing plugin to output formatted string to plain text file.
- Playback Queue Viewer (foo_pqview) Playback queue viewer.
- Playlist Bind (foo_playlist_bind) Synchronize playlist with contents of specific directory.
- Playlist Clear (foo_playlistclear) All playlists are cleared at startup.
- Playlist History (foo playlisthistory) Enables playlist history in foobar2000, similar to page history in browsers.
- Playlist Manager (foo_playlist_manager) Playlist manager.
- Playlist Name Enhenced (foo_playlist_name_enhanced) Appends automatically playlist info ("items / length") to all playlist names.
- Playlist Tools (foo_utils) Provides various general commands.
- Playlist Tools for Matroska (foo_utils_mka) Provides various general commands.
- Queue Manager (foo_queuemanager) It provides a window that shows the queue's contents and allows you to delete parts of them or clear the whole queue. Non-ColumnUI obsolete version, try panel version instead.
- Randomized Playlist Entry (foo_random) Randomized playlist entry.
- Rating (foo_rating) Display an icon in the systray with a tooltip popup from which you can choose a rating between 1 and 5 for the currently playing file.
- Remove Played (foo_removeplayed) It removes tracks from the playlist once they've been played.
- Soft Playlists (foo_softplaylists) Can create different Last.fm related playlists, love tracks on Last.fm and save and load XSPF playlists (make playlists without hard paths).
- Track Finder (foo_trackfinder) Displays a context menu that lets you quickly find songs based on their album title or artists name.
- Track Position (foo_trackpos) Provides a new context menu item "place after current playing", that allows you to place any tracks after the current playing one in the playing playlist.
- XSPF (foo_xspf) Adds XSPF support. XSPF is an open, XML based playlist format.
- Enhanced Playback Statistics (foo_enhanced_playcount) Stores timestamp of every song play, and also retrieves scrobbles from last.fm.
- Playback Statistics Custom (foo_playback_custom) Stores playback statistics in tags like foo_playcount_mod, with claimed faster response, and uses foo_custominfo db if file is unavailable for writing.
- Play Count Mod (foo_playcount_mod) Unofficial playcount modded to supress the update tag popups.
- Advanced Controls (foo_advancedcontrols) Control all the playback functions from icons in the Taskbar Notification Area (play, pause, next, previous, open)
- Bluetooth Control (foo_bluetooth_ctrl) Control your favourite music player using your favourite Symbian-based bluetooth enabled phone.
- COM Automation Server (foo_comserver2) Allows controlling foobar2000 through COM Automation
- Control Server (foo_controlserver) Acts as a server to control Foobar2000. Connect with a telnet client and control it using ASCII commands.
- DDE Control (foo_ddecontrol) Control foobar remotelly with DDE interprocess communication (interface in japanese only).
- HTTP Writer (foo_write_http) It's TCP/IP server that listens on a specified port for incoming requests such as play, stop, etc.
- Joystick Control (foo_joystick_control) Control foobar2000 from a joystick/gamepad.
- MIDI Transport (foo_miditransport) Control Foobar2k from external MIDI controllers (CC and MMC transport).
- Minibar2k (foo_Minibar2k) Control Foobar2k from your PDA (PocketPC based).
- Remote Control (foo_remotecontrol) Adds support to Melloware Intelliremote software which claims to work with Creative remote control (Soundblaster Live!, Audigy, Extigy, Audigy ZS and Soundblaster X-Fi.)
- RM-1800 (foo_mr1800) Adds support of Creative X-Fi's remote (RM-1800).
- RM-X Media Edition (foo_rmx) Yet another plugin for remote control. SHAREWARE.
- WinLIRC Client (foo_lirc) Control Foobar from a remote control.
- Chacon (foo_chacon) Chacon is a simple tool for fixing tags by converting them between different character sets.
- Custom Info (foo_custominfo) Allows you to set info fields for files without modifying them.
- Discogs (foo_discogs) Retrieve info and album art from Discogs.com database.
- Freedb Tagger (foo_freedb2) Freedb.org tagger. Now included with official foobar2000 installers.
- Live Show Tagger (foo_tradersfriend) Live show tagger.
- m-TAGS component (foo_tags) Support for m-TAGS metadata separation (tags are kept in separate files)
- on foobar2000.org
- hydrogenaudio - list of components from earlier versions not yet ported to 0.9.x. on