add abstract events