Advanced techniques for writing good interfaces