initial commit
minor rework