Refactored large portions of code
Added additional comments
Added @version to abstract classes and various functions