added separate compilation