implement double colon operator