minor changes
seperated Implementation and use