component separation techniques