refactored
new stuff