Extended functionality

Merge branch extendedFunctionality into dev. 
extendedFunctionality is not fully completed yet.