fix: use map of subviews instead of array
fix: add 'removeSubview' function
fix: remove subview automatically when view is removed