refactoring. all works except -2 and -y