implement alec's idea -- it's cleaner