in reply to subroutines - creating a custom subroutine and 'subroutine redefined' errors

The best way to do this is using a dispatch table. See Implementing Dispatch Tables for a tutorial.