This week I was struggling a bit customizing an exsisting theme for a client. To prevent the theme from being overwritten each update I created a child theme. This allowed me to cusomize most of the files that handled templating. The function which loaded additional stylesheets and js libraries was pluggable and could be overwritten.
The biggest problem I faced was to overwrite some of the core functions of the theme. These were not pluggable (did not use the if(!function_exsisits()) statement) and didn't use a hook or filter. Calling the same core function from the child theme functions.php or a custom plugin threw a fatal error (function cannot be redeclared).