added proper key modifier support