Feature/#516

- Resolves #382 
- Resolves #451 
- Resolves #458  
- Resolves #503 
- Resolves #516