added psuedo-interface (code contract via casting)
merge with interface branch