add structure for extra features
working
performance improved
misc