TODO: merge these changes with other branches
dev-unsorted merge