use direction vectors instead of enum