adding implementation for various method.