working compile stuff