implemented custom key