working compiler sort of