added unified and heterogeneous functions