allow custom penalties, catch exception on empty array