compilation method