Updated to use a recursive makefile structure