Move input verification to subroutines for readability
Move parameter munging to subroutines
Move more functionality into the subroutine
Move getting the cache result to a subroutine
Move getting args to subroutine
Move list of local properties to a global variable so they are easy to add
Merge branch 'copy' into gb_master