Add signature
Add formats
Move WeakStrongHash to separate hash.go