adding generic functionality