Gh476 self contained independent reusable implementation

#476 
ok