implementing extra functions