basic working compiler