make it able to take complex data