--- a/Makefile
+++ b/Makefile
@@ -10,16 +10,14 @@
 # debugging
 # DFLAGS = -DTEST -DDEBUG
 DFLAGS = -DGAPING_SECURITY_HOLE
-CFLAGS = -O
+CFLAGS ?= -O
 XFLAGS = 	# xtra cflags, set by systype targets
 XLIBS =		# xtra libs if necessary?
 # -Bstatic for sunos,  -static for gcc, etc.  You want this, trust me.
 STATIC =
-CC = cc $(CFLAGS)
-LD = $(CC) -s	# linker; defaults to stripped executables
 o = o		# object extension
 
-ALL = cryptcat
+all: cryptcat
 
 ### BOGON-CATCHERS
 
@@ -28,8 +26,8 @@
 
 ### HARD TARGETS
 
-cryptcat:	netcat.c farm9crypt.o twofish2.o
-	$(LD) $(DFLAGS) $(XFLAGS) $(STATIC) -o cryptcat netcat.c farm9crypt.o twofish2.o $(XLIBS)
+cryptcat:	netcat.o farm9crypt.o twofish2.o
+	$(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $^
 
 nc-dos:
 	@echo "DOS?!  Maybe someday, but not now"
@@ -115,10 +112,8 @@
 	make -e $(ALL) $(MFLAGS) XFLAGS='-DNEXT' STATIC=-Bstatic
 
 farm9crypt.o: farm9crypt.cc farm9crypt.h
-		${CC} -c farm9crypt.cc
 
 twofish2.o: twofish2.cc twofish2.h
-		${CC} -c twofish2.cc
 
 # start with this for a new architecture, and see what breaks.
 generic:
