Modularize!
Message padding and multiblock support
Self applicable sha