updated and finished for now
updated for completion of crypto programs