added all mandatory functions