Updated all functions to implement new function-specific derived classes