only registers valid move positions
cap/rem distinction; cleaner position detection