split validation and file move; file move should be in model; controller should not access filesystem