cleaned up unecessary type parameterization in various functions, implemented basisjoin but haven't refactored code to use it