further functions added