add socket support