working... need to implement signals and fix cat bug