updated with CTCP functions