implemented some addtional functionality