improved get set delete