UI improvements and better code (an interface!)