Added #inspect and cleaned up source/target implementation