Add move functionality. Still need optimizations.