History of CodeLab

Change Log for CodeLab for Paint.NET

Here is the official change log for CodeLab.

Alpha - March 2006

This is the first release. It was written by Tom Jackson.

Alpha 2 - Jan 21, 2007

This is the first release written by me (BoltBait). Changes:
- "When a file is opened, it would be nice if the "Name: " text box were updated with the file name (minus the .cs). It does the opposite while saving, so I thought it would make sense to do this while loading." requested by SearedIce
- "Also, the ability to scroll sideways instead of wrapping text would be nice." by SearedIce
- "When an error shows up in the error field, and I click on it, the text in the text box that is causing the error is highlighted. This is great, however, if the erroneous code is not currently visible, nothing happens. It would be nice if the code edit window were automatically scrolled to where the highlighted error can be seen...otherwise, it is hard to find the error." by SearedIce
- "In the code editor, Ctrl-A doesn't select all." requested by BoltBait
- "needs a horizontal scroll bar on the error messages window." by BoltBait
- "It might be more helpful if the default text in the edit window were like this... " by BoltBait
- "It seems there is something going on with the "clear" button." requested by BuzzKill

Alpha 3 - Feb 09, 2007

- "It would be awesome of you could add custom icons to the effects." requested by BoltBait
- "It should allow you to organize your effects into sub menus." by BoltBait
- "CodeLab doesn't show build errors when making a DLL." by BoltBait

Alpha 4 - Feb 24, 2007

- I cleaned up some crashes relating to entering invalid filename characters.
- Cleaned up the source code and published it (see link below)

Beta 1 - Mar 16, 2007

- "There is a bug in your Alpha 4. The icon file is not actually included with the DLL" by MadJik
- "Hmmm... wonder if I could set it up to support some type of UI creation..." by BoltBait
- "Changes between Paint.NET 3.01 and 3.05 cause CodeLab to not work!" by BoltBait

Beta 2 - Jan 13, 2008

- "Codelab should be moved into the Advanced submenu under Effects" by pyrochild
- "When standard submenu names are chosen, the localized names should be used" by Fisherman's Friend
- "You should remove the 'if (selectionRegion.IsVisible(x, y))' check in the default script. It just slows the code down." by Rick Brewster
- "You should be able to specify a default submenu name in the code comments like this:
// submenu: Blurs
so that the UI creation dialog box is prepopulated for you" by BoltBait
- "When the Adjustments submenu is chosen the effect should go into the Adjustments menu instead of the Effects > Adjustments menu" by Kaiser Yoshi

1.0 Release - Apr 28, 2008

- "The UI needs a complete rewrite to make it look more like a proper application" by BoltBait
- "I think there's more value in an upgraded version of CodeLab that uses IndirectUI" by Rick Brewster
- "I would like the ability to maximize the code window. Also, I want to be able to specify Large Font mode" by Ego Eram Reputo
- "I don't ask for a better text editor. I don't ask for automatic formatting or syntax coloring" by pyjo
- "I only ask for some more sliders in the user interface." by pyjo
- "supporting the IPluginSupportInfo class for plugin author details, etc." by BoltBait
- "Is there any way to get the generated source-code?" by PhilipLB
- "Delete key doesn't cause a rebuild" by pyrochild
- "The editor should indent and outdent highlighted lines when tab and shift-tab is pressed" by BoltBait
- "effects that are in the adjustments menu can be in submenus under adjustments" by BoltBait
- "I want to be able to adjust the opacity of the editor window" by BoltBait
- "There should be support for the following defaults:
// Author: BoltBait
// URL:

just like we had for submenu in the Beta 2 build" by BoltBait

Syntax highlighting code for the editor supplied by Curtis (Curtis Black).

Many thanks goes out to pyrochild and Curtis for all the testing and feedback.

1.1 Release - Jul 27, 2008

- Colorwheel Bug Fixed
- Fixed a bug where the namespace could have bad characters in it
- Second colorwheel in a UI now defaults to secondary color
- Floating point slider control added (requested by MadJik)
- Drop-Down List Box control added
- "UserBlendOp" control added
- Script comment parsed for default effect name:
// Name: Effect Name
- Minor UI typo fixes

1.2 Release - Jul 31, 2008

- Font list control added (Requested by Ego Eram Reputo)

1.3 Release - Sept 16, 2008

- Added Radio Button List control type
- Added Reseed Button control type
- Improved syntax highlighting (by Curtis)
- Icons added to the editor UI (by Curtis)
- Added editor commands for commenting/uncommenting a selection
- Bug fixes

1.4 Release - Jan 11, 2010

- Added window title customization
- Script comment parsed for default window title:
// Title: Your window title here
- Fixed Radio Button List control type

1.5 Release - March 16, 2010

- Added multi-line text box control

1.6 Release - August 4, 2010

- Fixed a bug in float sliders
- Added Code Completion to the editor
- Added "File>New" templates for writing complex effects

1.7 Release - July 3, 2011

- Fixed two bugs in the Intellisense

1.8 Release - October 15, 2011

- Fixed a bug in how references were added. Thanks to pyrochild for the code.
- Rewrote the "File>New" templates.
- This is the last version that works on Paint.NET 3.5.11

UPDATE: Feb 1, 2018
You can download version 1.8f here--where "f" stands for "final". This is the final version of 1.8. It basically has all the features of CodeLab 3.3 only without the stuff that isn't compatible with Paint.NET 3.5.11 (For details, read this). If you're downloading this, you can thank users "xod" and "ReMake" for requesting it. Please note, this really is the final version to support Paint.NET 3.5.11. This was a "one-off" project and we will not be updating this in the future.

1.9 Release - May 16, 2014 - For Paint.NET 4.0

- Added Roll Control.
- Built DLL files now placed on user's Desktop.
- Default script now contains "if (IsCancelRequested) return;" in the y loop

2.0 Release - June 20, 2014

- All code generation updated for Paint.NET 4.0
- File New Templates updated - more effects, better code
- "Description" added to save as dll screen. This field shows up in Paint.NET 4.0 as a tooltip
// Desc: Your tooltip text here
- "KeyWords" added to save as dll screen. Plugins will eventually be searchable via keywords. Specify them separated by the pipe symbol "|".
// keywords: your|keywords|here
- Editor font size now remembered
- UI Builder has been updated (no more ascii art!)
- Editor font choice added to View menu.
  Download fonts here: Consolas, Envy Code R

2.1 Release - July 6, 2014

- When a effect dll is created on your desktop an install batch file is also created.
- A bug was fixed when locating bugs in your own code (double clicking on error message)
- On build dll page, an option was added for forcing aliased selection edges. This can also be added to the script as a comment:
// Force Aliased Selection
- Sample images attached if they exist (more details on this later)

2.2 Release - July 14, 2014

- When opening a .cs file the directory is now remembered for next time
- Build form has a new section: Forced Settings (Rarely used)
- In there is a setting for forcing the effect to be single threaded.
You can specify that in your script by using the following comment:
// Force Single Threaded
This only works once the dll has been built. While in the editor the effect is still running multi-threaded.

2.3 Release - August 16, 2014

- Fixed a bug in the User Interface code that could crash Paint.NET.

2.4 Release - November 28, 2014

- Fixed a bug in the code generation for menu placement for Adjustments.

2.5 Release - March 14, 2015

- Added UI Elements Renumber command.
- You can no longer build untitled files to dll.
- Two buttons added to the "View Source" screen.

2.6 Release - August 2, 2015

- Added empty script comments to the default script for build screen default values.
- Fixed processing of script comments for when comments are empty.
- Added 4 forms of help capability to built effects. (Tutorial)
- Added help content editor to Save as DLL screen.
- Added // Help: comment for help content.
- Added "custom help" to File New templates.
- Cleaned up "using" statements for compiled scripts.
- Cleaned up some of the File New template code generation.
- Added access to current and default palettes in File New templates.

2.7 Release - October 13, 2015

- UI controls now have custom types. This means the Angle control can now have a specified default angle instead of always 45.
- Fixed a few UI bugs.

2.8 Release - October 26, 2015

- Install.bat files are now good enough to ship with your .dll files.

2.9 Release - November 5, 2015

- Fixed a bug in the help system.

2.10 Release - November 29, 2015

- New options added to File > New template screen.
- Double Vector control, Double Slider control, and Roll control now have 3 decimal places of precision.
- Scripts can now specify the version number:
// Version: 3.14
// Version: 3,14

2.11 Release - February 9, 2016

- Bug fixes.
- "Hack" font added to supported fonts list. Download here.
- User toe_head2001 removed the RTF editor control and replaced it with the ScintillaNET editor component.

This is awesome because it is basically the same editor you'd find in Notepad++. All of the silly patches I had to put in to make an RTF control work for syntax highlighting have been removed.

We now have proper unlimited UNDO and REDO commands in the editor. The editor now includes lots of other features of Notepad++ including brace matching, block folding, show white space, word wrap, and current line highlighting.

2.12 Release - March 26, 2016

- Added System.Drawing.Drawing2D to the included assemblies.
- Script versions can now start with a 0, as in Version 0.1
- When using the editor with word wrap enabled, you'll see indicators if the lines wrapped.

2.13 Release - May 1, 2016

- Added auto updater. (Probably should have added this first.)
- Colorwheel controls can have specified defaulted colors.
- Double Vector controls can now have defaults.

2.14 Release - May 2, 2016

- Fixed a bug in the new Double Vector default code.

2.15 Release - May 28, 2016

- Added Find menu item.
- Added icons to UI Builder screen.
- Build errors now underlined in red.

2.16 Release - June 8, 2016

- Added Replace menu item.
- Fixed a rare crash when closing CodeLab.
- Error line numbers now match CodeLab script line number.
- Double-clicking on error messages now shows complete message.

2.17 Release - September 24, 2016

- Added tool bar (see View menu).
- Added toggles for code folding and line numbering to the View menu.
- Rewrote "Build to DLL" screen to include a full WYSIWYG help editor.
- Hover over red underlined errors to see the error message.
- Tweaks to the auto complete section.
- You can now hide the build errors box to maximize the code editor.
- Added a few Ctrl keys to the View menu.

2.18 Release - October 15, 2016

- Changed color chooser on Build to DLL screen to better match Paint.NET.
- CodeLab now opens faster.
- Tooltips added to code editor.
- The freshness check is now asynchronous which allows for faster opening on slow networks.

2.19 Release - April 15, 2017

- Fixed the crash that could be caused by the error tooltips.
- HiDPI fixes to all forms.
- IntelliBox items now filter as you type.
- Checkbox for Show Errors turns red if there are errors.

2.20 Release - June 4, 2017

- Intelligent Assistance updates
- F1 key while in editor opens help file
- Frosted Glass added to list of Template effects (Ctrl+N)
- Updated About Box

2.21 Release - June 7, 2017

- Fixed bug in Build to DLL screen when using Rich Text help files
- Modified updater code to defeat caching

2.22 Release - July 25, 2017

- Added Dark Theme
- "Intelligent assistance" now has support for user defined Types.

2.23 Release - July 29, 2017

- Fixed Dark Theme
- Added a few more templates to the File > New screen.

2.24 Release - August 31, 2017

- Added "File > Open Recent" list
- Title bar contains "*" if the script has unsaved changes

3.0 Release - January 10, 2018 - For Paint.NET v4.0.20+

- OnSetRenderInfo can be optionally utilized in the UserScript via the PreRender method.
- PDN Dark Theme compatibility
- New 'Find & Replace' panel with expanded functionality
- Edit -> Format Document. Automatic line indentation, and whitespace trimming from line ends
- Proper "Intelligent Assistance" for User Defined type members (fields, methods, ect. in your script), and type members defined in the Effect class (EnvironmentParameters, IsCancelRequested, ect.)
- Autocomplete box can now be filtered object type (Class, Property, Keyword, ect.)
- F12 to 'Go To Definition'. Objects from the .Net Framework open; objects from UserScript go to location in document
- Int and Double sliders can now have decorations
- Users can have controls disabled based on the status of other controls (enable/disable checkbox, etc.)
- All File > New templates rewritten to utilize the new PreRender() function
-Bug fix: Red underlines for errors are now correctly located
-Bug fix: Radio buttons and Drop-down lists now properly set default values

3.1 Release - January 16, 2018 - For Paint.NET v4.0.21+

- Object disposal in "File > New" Templates
- Create Work Surface in "File > New" Templates
- View Full Source without having to build a DLL file.
- Support for NestedTypes to the 'Intelligent Assistance' features.
- User Interface controls can now be previewed while in the UI Designer
- The script can now be run with a fully functional UI, while still in CodeLab. Building a DLL file is not necessary.
- Fixed reported issues with 'Format Document'

3.2 Release - January 17, 2018

- Fixed a crash in the Preview UI screen and the Preview Effect screen.

3.3 Release - February 1, 2018

- Added Posterize to File > New Template
- Comments in the UICode region are ignored
- Added "Auto" to the View > Theme menu.
- Added and fixed some snippets.
- Added Debug Output window
- Fixed the AutoComplete box erroneously showing after typing var and void
- Fixed syntax highlighting within #if blocks
- Fixed some issues in Autocomplete
- Updated to the latest ScintillaNET editor
- Fixed Format Document and gave it a shortcut key (Ctrl+M)
- Other small bug fixes and code refactoring

3.4 Release - February 17, 2018

- HiDPI Fixes and other UI tweaks.
- Fixed bug where AutoComplete wouldn't work correctly if the 'Find & Replace' was being used.
- Add a Bookmarks margin.
- Shows Errors, Find, and Bookmarks in an Indicator Map (Ctrl+M).
- Format Document shortcut key changed to Ctrl+Q.
- Variables declared in sequence are now parsed.
- Correct Method overloads are now detected.

3.5 Release - February 24, 2018

- Fixed: Local Variables not always displaying in the AutoComplete box.
- Fixed: Auto Completion triggered when there were no suitable matches.
- Auto Completion's best suggestions now match case of what you're typing.
- Errors are now again enumerated when building a DLL file.
  (This was lost during the refactoring for the Effect Preview.)
- All built-in effects now available in "File > New" templates.
- Redesigned the Variable Rename menu to be less obnoxious and more discoverable. Shows up as a Light Bulb now.
- Added a context menu to the Error box.
  Options for 'Copy Error Message', 'View Full Error', and 'Look up Error Code'.
- Tooltips now display on raw values (ex: "myString", 'c', 5.1m, 5, 3f, ect.).
- Fixed a minor bug in GoToDefinition.
- Fixed a possible crash with Method overload detection.
- Improved the switch snippet.
- Build now triggered after snippet inserted.
- UI tweaks.
- Fixed the Cut and Replace icons to make them more visible on Dark theme.
- Editor Tooltips are now themed (Light / Dark).
- WhiteSpace indicator dots are now scaled with DPI.
- CodeLab will only check freshness every 7 days.

4.0 Release - September 5, 2018 - For Paint.NET v4.1+

Editor changes:
- Editor has tabs and can edit more than one file at a time.
- Generate VS Project function on Build screen.
- Separate Save and Save As functions.
- The autocomplete function now does matching initials.
- Indicator Map (Ctrl+M) now integrated with scroll bar.
- Building to DLL now saves to Desktop in a ZIP file all ready for posting.
- Install.BAT files now work for both the Classic and Store versions of PdN.
Indirect UI changes:
- Colorwheel control now has Alpha style option.
- Colorwheel control reset button can now be hidden.
- Filename control added.
- File>New templates have a "non-looping" style for GDI+ plugins.

4.1 Release - October 22, 2018 - For Paint.NET v4.1.2+

- Added a 'Find Next' button to the Find panel.
- Ensure the .rtz file is part of the generated Solution.
- Retain default values when using UI Designer.
- Changed "while" snippet.
- Fixed generated OnDispose code.
- Fixed a bug in Install.BAT files for the Store versions of PdN.
- Lots of code cleanup, minor fixes, and HiDPI fixes.

4.2 Release - March 18, 2019 - For Paint.NET v4.1.6+

- New Icons!
- Improved the 'unsaved changes' dialog for when there's only one tab open, and also changed the wording in the dialog when there's multiple tabs open, to be less confusing
- The search box (in Find & Replace) now turns red when there are no matches
- When using Save As, the "//Name: " comment is now parsed to try to create a default filename. If it's unsuccessful, it will fall back to "MyScript.cs"
- Minor fixes to Format Document
- Files (with .cs extension) can now be dropped (drag and drop) into CodeLab to open them.
- Options to use force SingleRenderCall and Legacy ROI when Building DLL
- Added three additional menu items to the Effects menu to start CodeLab with specific parameters (EffectsFlags, EffectRendingSchedule).
- Scripts with "//Submenu: Adjustments" will be put in the Adjustments menu instead of the Effects menu
- If your effect has a sample image for The Plugin Browser, it will be shown on the Build to DLL form
- Added a new high res icon for when CodeLab is running higher than 96dpi
- Added new build options (Legacy ROI, Single Render Call) to File New template screen
- Added the following script comments to control build options:
// Force Legacy ROI
// Force Single Render Call
- CodeLab can now be installed to the Store version of Paint.NET. However, when running the Store version you can not create a Visual Studio project from your CodeLab script. Building a DLL still works fine.
- Assortment of bugfixes, cleanups, refactorings

4.3 Release - July 13, 2019 - For Paint.NET v4.2+

- Redesign File > New screen
- HighDPI icons
- Add Format, Find, and Replace toolbar buttons
- Add snippet for Try/Catch
- Bug fixes to Quick Format
- Added flexible, themeable, customizable message boxes
- Allow arbitrary names for UI fields, also removed UI Elements Renumber command
- Added light bulb renaming of fields defined in user's script
- Redesigned UI Builder screen
- Added support for the new Uri Control
- Update clipboard template code
- Improvements to code completion
- Intelligent Assistance improvements for Extension Methods, Generic Methods, and Generic Types
- Fixed build screen to not hold the icon file open
- Various code cleanups and improvements

4.4 Release - November 23, 2019 - For Paint.NET v4.2+

- Added a Snippet Manager
- Added suggested names to autocomplete
- Added keyboard shortcut ( Ctrl+] ) to go to matching brace
- Added option to specify an Enum on RadioButtonControl and ListBoxControlControl
- Added argument constraints to tooltips for generic methods and classes
- Improved method overload detection: detection of method parameter modifiers (out, ref, params); detection of inferred generic methods
- Lots of bug fixes, refactorings, and optimizations

5.0 Release - January 9, 2020 - For Paint.NET v4.2+

- Added TXT file support
- Added File Type plugin support
- Added Shape editing support
- File New rewritten to support multi-effect pipeline
- Lots of bug fixes, refactorings, and optimizations

5.1 Release - January 19, 2020 - For Paint.NET v4.2+

- Fix user selected blend op in File New Templates
- Add user selected color to File New Templates
- Fix the fill function with primary/secondary colors
- Add separate word wrap option to TXT documents
- Add auto complete brace pairs
- Fix bug in Autocomplete
- Added 3 new fonts to the View Font menu
- These new fonts support Programming Ligatures
- Added help to the View Font menu with links to fonts

5.2 Release - January 31, 2020 - For Paint.NET v4.2.9+

- Fix Pan Slider Default
- Improved File New Template code
- Updated default script for Paint.NET v4.2.9

5.3 Release - April 24, 2020 - For Paint.NET v4.2.10+

- Fix File New Code Generation for Paint.NET v4.2.11
- Added Layer Rotate/Zoom to File New Templates
- Changed: The hotkey for the Debug Output pane is now Ctrl+Alt+O. Duplicate Line(s) is now performed when Ctrl+D is pressed.
- Changed: Editor tooltips will now hide when clicking or typing. This mimics behavior of Visual Studio.
- Improved editor support for Shapes. Better error messages. Tooltips and F12 Lookup are now supported on Tags and Attributes.
- Various small bug fixes to the Auto Complete box.
- Fixed reference to System.Core assembly for Paint.NET v4.2.11

5.4 Release - May 21, 2020 - For Paint.NET v4.2.11+

- Improved suggested variable names
- Improvemens in Autocomplete and Intellisense
- Generate Type Definitions on F12. You can now see definitions inside of libraries.
- Remember scroll positions (and other things) when switching tabs
- Rewrite File New Template for up to 2 Scratch Surfaces

6.0 Release - June 25, 2020 - For Paint.NET v4.2.12+

- Switch to the Roslyn compiler to support C# 7.3 syntax
- Added new Settings dialog
- Build can now be executed by pressing F6
- Syntax highlighting for Escape characters in strings is now enabled
- Compiler Warning Level can now be changed (0-4).
- Individual compiler warnings can be ignored.
- Added support for Extended Color syntax highlighting (VS '19 colors).
- Added Spellchecking. Checks strings and comments in C# code, and plain text documents.
- Other new Settings include: Indent Spaces (2 or 4) and Current Line Frame
- Minor code refactoring and bug fixes

6.1 Release - June 25, 2021 - For Paint.NET v4.2.16+

- Use Roslyn syntax in generated code
- Fix the disablement of the Transparency menu
- Disable intelligent assistance when document is readonly
- Fix issue with square brackets in controls' Display Name
- Add SubmenuNames.Color which is new in PdN 4.2.16
- Copy Text and RTF formats onto the clipboard (Handy when pasting syntax highlighted code into Word)
- Fix compilation with PDN v4.2.16
- Fix Clouds rendering for Paint.NET v4.2.16
- Fix URLs for Errors and Warnings
- Minor code refactoring and bug fixes

6.2 Release - September 22, 2021 - For Paint.NET v4.3+

- Update to .NET 5.0
- Scripts can use C# 9.0 compiler syntax
- Use an AssemblyLoadContext when loading built scripts
- Switch to ILRepack for building CodeLab
- Minor code refactoring and bug fixes

6.3 Release - September 27, 2021 - For Paint.NET v4.3.1+

- Improve look of some icons
- Fix File>New>Filetype generated code
- Fix File>New>Effect Advanced Pointer code
- Improve IEnumerable<T> name suggestions
- Minor code refactoring and bug fixes

6.4 Release - November 21, 2021 - For Paint.NET v4.3.3+

- Improve color selector in UI designer
- Remove ".dll" from assembly name
- Switch to .NET 6
- Scripts can use C# 10.0 compiler syntax
- Minor code refactoring and bug fixes

6.5 Release - February 19, 2022 - For Paint.NET v4.3.8+

- Fix default font name for font control
- Add support for new Folder Chooser control
- Add filter toolbar to AutoCompleteBox
- Minor code refactoring and bug fixes

6.6 Release - August 9, 2022 - For Paint.NET v4.3.11+

- Fix brace matching
- Add option to disable auto-complete
- Minor code refactoring and bug fixes

6.7 Release - November 22, 2022 - For Paint.NET v5.0a+

- Fix build for Paint.NET v5.0a
- Visual hint to indicate when an item will/won't auto complete
- Rainbow Braces
- Color previews in tooltips and auto complete
- Summaries from Doc Comments
- Minor code refactoring and bug fixes

6.8 Release - January 22, 2023 - For Paint.NET v5.0+

- Fix crash in UI Designer preview screen
- Minor code refactoring and bug fixes

6.9 Release - September 21, 2023 - For Paint.NET v5.0.10+

- Access to the modern effect pipeline:
    ▪ Create new style Bitmap effects
    ▪ Create GPU accelerated image effects
    ▪ Create GPU accelerated drawing effects
- Pressing F1 can now open PDN API documentation
- Increased code window size
- New UI element LabelComment
- Add Premultiplied/Straight Alpha and Disable Selection Clipping checkboxes to the Build Form (for GPU accelerated plugins)
- Ctrl+N now opens menu allowing you to choose what type of new effect you wish to create
- Lots of bug fixes and small enhancements

6.10 Release - October 12, 2023 - For Paint.NET v5.0.11+

- Ability to configure color context to use WorkingSpace
- Only one menu entry now (configure Render Options on the configuration screen)
- Improvements to autocomplete
- Added Layers Chooser UI control
- Templates now have links to tutorials
- Default effect type is now GPU Image effect
- Lots of bug fixes and small enhancements

6.11 Release - December 3, 2023 - For Paint.NET v5.0.11+

- Allow more icon sizes
- Enable code folding on #Region
- Source Code viewer has syntax highlighting
- Fix RTF help for plugins
- Enhancements for Dark Mode
- Remomve new build options for Classic effects
- Add string UI control defaults
- Fix Randomize bugs with built scripts
- Lots of bug fixes and small enhancements

6.12 Release - February 11, 2024 - For Paint.NET v5.0.12+

- CodeLab now detects if a project type changes (only for C# project types) and will automatically adjust during build.
- Minor bug fixes and enhancements




CodeLab 6.12 Released
(February 11, 2024)
This latest release of CodeLab for Paint.NET includes the ability to write GPU accelerated plugins.

Double-Six Dominoes 3.1
(May 10, 2021)
This long-awaited refresh of the most popular dominoes game on is now available!

HTML Editor 1.5 Released
(March 31, 2016)
This latest release is a complete rewrite adding a wysiwyg editor mode and a much improved UI.